Convertir Une Palette Pal 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 Ocp Art Studio (.pal) en valeurs utilisables par le basic.

Voici donc le résultat.

;
; Convert ocp .pal files to .bin files        
; Files .bin are simply Basic ink 0-26    
; .pal 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 .pal file
;
          ld hl,name    ; ink filename
          ld de,&C000
          ld b,endn-name
          call &BC77
          ld hl,&2000   ; load .pal file at #2000
          call &BC83
          call &BC7A
;
      call ocp_pal_to_ink
;           
; 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
;    
; Ocp Pal to Ink 
;
ocp_pal_to_ink    
    ld hl,#2000
    ld de,#2001
    ld b,16
loop_cr    push bc
    ld bc,12
    add hl,bc
    ld a,(hl)
    ld (de),a
    inc e
    pop bc
    djnz loop_cr
    ret

;
; Convert OCP .pal 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.pal"
endn
; save file
name2 BYTE "toto.bin"
endn2

Download File(s)

Conv_pal.txt

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