Convertir Une Palette Ink En Palette Basic

Pour la petite histoire, Lastic, un gars cool rencontré lors de la Benediction Coding Party 4, m'a demandé s'il était possible de récupérer les valeurs des palettes générées via iMPdraw (.ink) en valeurs utilisables par le basic.

Voici donc le résultat.

;
; Convert .ink files to .bin files        
; Files .bin are simply Basic ink 0-26    
; ink file is loaded, converted and saved in .bin file
; Code : Ast/iMPACT 13/11/24
;
      ORG &1000
      ENT start

palette
      BYTE &54,&44,&55,&5C
      BYTE &58,&5D,&4C,&45
      BYTE &4D,&56,&46,&57
      BYTE &5E,&40,&5F,&4E
      BYTE &47,&4F,&52,&42
      BYTE &53,&5A,&59,&5B
      BYTE &4A,&43,&4B
;
start
;
; Load .ink file
;
          ld hl,name    ; ink filename
          ld de,&C000
          ld b,endn-name
          call &BC77
          ld hl,&2000   ; load .ink file at #2000
          call &BC83
          call &BC7A
;           
; Convert palette
;
          call convert_pal
;
; Save .bin file
;
          ld hl,name2
          ld de,&C000
          ld b,endn2-name2
          call &BC8C
          ld hl,&2000
          ld de,16
          ld bc,0
          ld a,2
          call &BC98
          jp &BC8F
;
; Convert .ink file in locomotive basic ink 
;
convert_pal
;
          ld de,&2000
          ld b,16       ; palette countains 16 colours
;             
loop_ink
          ld hl,palette ; gate array palette
loop_ink2
          ld a,(de)
          ld c,(hl)
          cp c
          jr z,poke_l
;
; Mirror Palette
;
          ld a,c
          cp &50
          jr z,c50      ;1
          cp &48
          jr z,c48      ;7
          cp &41
          jr z,c41      ;13
          cp &51
          jr z,c51      ;19
          cp &49
          jr z,c49      ; 25
;
          inc l
          jr loop_ink2

poke_l    ld a,l
          ld (de),a
          inc e
          djnz loop_ink
          ret
;
; Poke Colour mirroring
;
c50       ld l,1
          jr poke_l
;
c48       ld l,7
          jr poke_l
;
c41       ld l,13
          jr poke_l
;
c51       ld l,19
          jr poke_l
;
c49       ld l,25
          jr poke_l

; load file
name  BYTE "toto.ink"
endn
; save file
name2 BYTE "toto.bin"
endn2

Download files

conv_ink.dsk
conv.txt

Sauf mention contraire, le contenu de cette page est protégé par la licence Creative Commons Attribution-ShareAlike 3.0 License