added command to change color palette on MEGA65
This commit is contained in:
1 parent
0c5f08c775
commit
413183474b
13 files changed
+701
-251
No files matched your search
@@ -100,12 +100,16 @@ Displays BASIC memory usage information:
|
||||
|
||||
### `MONITOR` (MEGA65)
|
||||
|
||||
Invokes a machine language monitor
|
||||
Invokes a machine language monitor. Not finished yet!
|
||||
|
||||
### `SYSINFO` (MEGA65)
|
||||
|
||||
Displays various system information.
|
||||
|
||||
### `COLORSET id` (MEGA65)
|
||||
|
||||
Changes the color set (palette). 0 = alias for the default one. Add 128 for a greyscale version.
|
||||
|
||||
### `CLEAR` (cart, MEGA65)
|
||||
|
||||
Clears the screen content.
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
;; #CONFIG# KEYCMD_F9 "REM F9"
|
||||
;; #CONFIG# KEYCMD_F10 "\5FL"
|
||||
;; #CONFIG# KEYCMD_F11 "REM F11"
|
||||
;; #CONFIG# KEYCMD_F11 "COLORSET 128"
|
||||
;; #CONFIG# KEYCMD_F12 "\5FHF"
|
||||
;; #CONFIG# KEYCMD_F13 "JOYCRSR 2"
|
||||
;; #CONFIG# KEYCMD_F14 "BOOTCPM"
|
||||
@@ -77,7 +77,7 @@
|
||||
; --- Screen editor
|
||||
|
||||
;; #CONFIG# EDIT_STOPQUOTE YES
|
||||
;; #CONFIG# VIC_PALETTE 0 ; 0 = default; 1 = C65, 2 = Colodore, 3 = VICE, 4 = Frodo, 5 = Deekay
|
||||
;; #CONFIG# VIC_PALETTE 0 ; 0 = default; 1 = C65, 2 = Frodo, 3 = VICE, 4 = Colodore, 5 = Deekay
|
||||
|
||||
|
||||
; --- Software features
|
||||
|
||||
@@ -100,8 +100,8 @@
|
||||
!addr COLSTORE = $9C ; [!] screen border storage for tape routines
|
||||
}
|
||||
!addr MSGFLG = $9D ; bit 6 = error messages, bit 7 = control message
|
||||
!addr PTR1 = $9E ; for tape support, counter of errorneous bytes [!] also used by PRIMM
|
||||
!addr PTR2 = $9F ; for tape support, counter for errorneous bytes correction [!] also used by PRIMM
|
||||
!addr PTR1 = $9E ; for tape support, counter of errorneous bytes [!] also used by PRIMM and other routines
|
||||
!addr PTR2 = $9F ; for tape support, counter for errorneous bytes correction [!] also used by PRIMM and other routines
|
||||
!addr TIME = $A0 ; $A0-$A2 jiffy clock
|
||||
!addr IECPROTO = $A3 ; [!] IEC or pseudo-IEC protocol, >= $80 for unknown; originally named TSFCNT
|
||||
!addr TBTCNT = $A4 ; temporary variable for tape and IEC, [!] our usage probably differs in details
|
||||
|
||||
@@ -45,6 +45,8 @@
|
||||
;; #ALIAS# M65_MODESET = KERNAL_0.M65_MODESET
|
||||
;; #ALIAS# M65_SETWIN_Y = KERNAL_0.M65_SETWIN_Y
|
||||
|
||||
;; #ALIAS# m65_colorset = KERNAL_0.m65_colorset
|
||||
|
||||
;
|
||||
; Ultimate 64 specific parts
|
||||
;
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
!set ITEM_02 = cmd_monitor
|
||||
!set ITEM_03 = BOOTCPM
|
||||
!set ITEM_04 = cmd_joycrsr
|
||||
!set ITEM_05 = cmd_colorset
|
||||
|
||||
|
||||
!ifndef HAS_OPCODES_65C02 {
|
||||
@@ -18,12 +19,16 @@ command_04_jumptable_lo:
|
||||
!byte <(ITEM_01-1)
|
||||
!byte <(ITEM_02-1)
|
||||
!byte <(ITEM_03-1)
|
||||
!byte <(ITEM_04-1)
|
||||
!byte <(ITEM_05-1)
|
||||
|
||||
command_04_jumptable_hi:
|
||||
|
||||
!byte >(ITEM_01-1)
|
||||
!byte >(ITEM_02-1)
|
||||
!byte >(ITEM_03-1)
|
||||
!byte >(ITEM_04-1)
|
||||
!byte >(ITEM_05-1)
|
||||
|
||||
} else { ; HAS_OPCODES_65C02
|
||||
|
||||
@@ -35,4 +40,5 @@ command_04_jumptable:
|
||||
!word ITEM_02
|
||||
!word ITEM_03
|
||||
!word ITEM_04
|
||||
!word ITEM_05
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
;; #LAYOUT# M65 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
cmd_colorset:
|
||||
|
||||
; Make sure we are in MEGA65 native mode
|
||||
|
||||
jsr helper_ensure_native_mode
|
||||
|
||||
; Fetch palette ID
|
||||
|
||||
jsr fetch_uint8
|
||||
+bcs do_SYNTAX_error
|
||||
|
||||
; Set the palette
|
||||
|
||||
jsr m65_colorset
|
||||
+bcs do_ILLEGAL_QUANTITY_error
|
||||
|
||||
rts
|
||||
@@ -27,6 +27,7 @@
|
||||
!addr VK1__M65_CLRWIN = $4000 + 2 * 13
|
||||
!addr VK1__m65_screen_upd_txtrow_off = $4000 + 2 * 14
|
||||
!addr VK1__m65_shadow_BZP = $4000 + 2 * 15
|
||||
!addr VK1__m65_colorset = $4000 + 2 * 16
|
||||
|
||||
} else {
|
||||
|
||||
@@ -62,4 +63,5 @@
|
||||
!word M65_CLRWIN
|
||||
!word m65_screen_upd_txtrow_off
|
||||
!word m65_shadow_BZP
|
||||
!word m65_colorset
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
;; #LAYOUT# M65 KERNAL_0 #TAKE
|
||||
;; #LAYOUT# M65 KERNAL_1 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
!ifdef SEGMENT_KERNAL_0 {
|
||||
|
||||
m65_colorset:
|
||||
|
||||
jsr map_KERNAL_1
|
||||
jsr (VK1__m65_colorset)
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
m65_colorset_reset:
|
||||
|
||||
; Enable RAM palette
|
||||
|
||||
lda VIC_CTRLA
|
||||
ora #$04
|
||||
sta VIC_CTRLA
|
||||
|
||||
; Clear all the pallettes, select the 1st one
|
||||
|
||||
ldx #$03
|
||||
@1:
|
||||
lda m65_colorset_selection, x
|
||||
sta VIC_PALSEL
|
||||
|
||||
; Clear concrete palette
|
||||
|
||||
lda #$00
|
||||
tay
|
||||
@2:
|
||||
sta PALETTE_R, y
|
||||
sta PALETTE_G, y
|
||||
sta PALETTE_B, y
|
||||
|
||||
iny
|
||||
bne @2
|
||||
|
||||
dex
|
||||
bpl @1
|
||||
|
||||
; Select default palette
|
||||
|
||||
lda #CONFIG_VIC_PALETTE
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
m65_colorset: ; entry point for BASIC; .A - palette, where bit 7 selects greyscale; sets Carry to mark palette out of range
|
||||
|
||||
asl
|
||||
php
|
||||
|
||||
cmp #($06 * 2)
|
||||
bcs m65_colorset_error
|
||||
|
||||
; Prepare pointer to palette
|
||||
|
||||
tax
|
||||
lda m65_colorset_presets+0, x
|
||||
sta PTR1+0
|
||||
lda m65_colorset_presets+1, x
|
||||
sta PTR1+1
|
||||
|
||||
; Select color/greyscale variant
|
||||
|
||||
plp
|
||||
bcs m65_colorset_greyscale
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
m65_colorset_color:
|
||||
|
||||
ldx #$03
|
||||
@1:
|
||||
lda m65_colorset_selection, x
|
||||
sta VIC_PALSEL
|
||||
|
||||
ldy #$0F
|
||||
@2:
|
||||
lda (PTR1), y
|
||||
sta PALETTE_R, y
|
||||
|
||||
jsr m65_colorset_PTR1_inc_16
|
||||
|
||||
lda (PTR1), y
|
||||
sta PALETTE_G, y
|
||||
|
||||
jsr m65_colorset_PTR1_inc_16
|
||||
|
||||
lda (PTR1), y
|
||||
sta PALETTE_B, y
|
||||
|
||||
jsr m65_colorset_PTR1_dec_32
|
||||
|
||||
dey
|
||||
bpl @2
|
||||
|
||||
dex
|
||||
bpl @1
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
m65_colorset_done:
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
m65_colorset_error:
|
||||
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
|
||||
m65_colorset_greyscale:
|
||||
|
||||
jsr m65_colorset_PTR1_inc_16
|
||||
jsr m65_colorset_PTR1_inc_16
|
||||
jsr m65_colorset_PTR1_inc_16
|
||||
|
||||
ldx #$03
|
||||
@1:
|
||||
lda m65_colorset_selection, x
|
||||
sta VIC_PALSEL
|
||||
|
||||
ldy #$0F
|
||||
@2:
|
||||
lda (PTR1), y
|
||||
|
||||
sta PALETTE_R, y
|
||||
sta PALETTE_G, y
|
||||
sta PALETTE_B, y
|
||||
|
||||
dey
|
||||
bpl @2
|
||||
|
||||
dex
|
||||
bpl @1
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
m65_colorset_PTR1_inc_16:
|
||||
|
||||
clc
|
||||
lda PTR1+0
|
||||
adc #$10
|
||||
sta PTR1+0
|
||||
bcc @1
|
||||
inc PTR1+1
|
||||
@1:
|
||||
rts
|
||||
|
||||
m65_colorset_PTR1_dec_32:
|
||||
|
||||
sec
|
||||
lda PTR1+0
|
||||
sbc #$20
|
||||
sta PTR1+0
|
||||
bcs @1
|
||||
dec PTR1+1
|
||||
@1:
|
||||
rts
|
||||
|
||||
|
||||
m65_colorset_selection:
|
||||
|
||||
!byte %11000000, %10000000, %01000000, %00000000
|
||||
|
||||
m65_colorset_presets:
|
||||
|
||||
!word m65_colorset_2 ; default one
|
||||
!word m65_colorset_1
|
||||
!word m65_colorset_2
|
||||
!word m65_colorset_3
|
||||
!word m65_colorset_4
|
||||
!word m65_colorset_5
|
||||
}
|
||||
@@ -0,0 +1,476 @@
|
||||
;; #LAYOUT# M65 KERNAL_1 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
; #1 - original C65 palette, data taken from C65 manual
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_1_0 = $000000 ; black
|
||||
!set RGB_1_1 = $FFFFFF ; white
|
||||
!set RGB_1_2 = $FF0000 ; red
|
||||
!set RGB_1_3 = $00FFFF ; cyan
|
||||
!set RGB_1_4 = $FF00FF ; purple / magenta
|
||||
!set RGB_1_5 = $00FF00 ; green
|
||||
!set RGB_1_6 = $0000FF ; blue
|
||||
!set RGB_1_7 = $FFFF00 ; yellow
|
||||
!set RGB_1_8 = $FF6600 ; orange
|
||||
!set RGB_1_9 = $AA4400 ; brown
|
||||
!set RGB_1_A = $FF7777 ; light red / pink
|
||||
!set RGB_1_B = $555555 ; dark grey
|
||||
!set RGB_1_C = $888888 ; medium grey
|
||||
!set RGB_1_D = $99FF99 ; light green
|
||||
!set RGB_1_E = $9999FF ; light blue
|
||||
!set RGB_1_F = $BBBBBB ; light gray
|
||||
|
||||
; #2 - a Frodo palette, values taken from VICE emulator
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_2_0 = $000000 ; black
|
||||
!set RGB_2_1 = $FFFFFF ; white
|
||||
!set RGB_2_2 = $CC0000 ; red
|
||||
!set RGB_2_3 = $00FFCC ; cyan
|
||||
!set RGB_2_4 = $FF00FF ; purple / magenta
|
||||
!set RGB_2_5 = $00CC00 ; green
|
||||
!set RGB_2_6 = $0000CC ; blue
|
||||
!set RGB_2_7 = $FFFF00 ; yellow
|
||||
!set RGB_2_8 = $FF8800 ; orange
|
||||
!set RGB_2_9 = $884400 ; brown
|
||||
!set RGB_2_A = $FF8888 ; light red / pink
|
||||
!set RGB_2_B = $444444 ; dark grey
|
||||
!set RGB_2_C = $888888 ; medium grey
|
||||
!set RGB_2_D = $88FF88 ; light green
|
||||
!set RGB_2_E = $8888FF ; light blue
|
||||
!set RGB_2_F = $CCCCCC ; light gray
|
||||
|
||||
; #3 - a VICE emulator palette
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_3_0 = $000000 ; black
|
||||
!set RGB_3_1 = $FDFEFC ; white
|
||||
!set RGB_3_2 = $BE1A24 ; red
|
||||
!set RGB_3_3 = $30E6C6 ; cyan
|
||||
!set RGB_3_4 = $B41AE2 ; purple / magenta
|
||||
!set RGB_3_5 = $1FD21E ; green
|
||||
!set RGB_3_6 = $211BAE ; blue
|
||||
!set RGB_3_7 = $DFF60A ; yellow
|
||||
!set RGB_3_8 = $B84104 ; orange
|
||||
!set RGB_3_9 = $6A3304 ; brown
|
||||
!set RGB_3_A = $FE4A57 ; light red / pink
|
||||
!set RGB_3_B = $424540 ; dark grey
|
||||
!set RGB_3_C = $70746F ; medium grey
|
||||
!set RGB_3_D = $59FE59 ; light green
|
||||
!set RGB_3_E = $5F53FE ; light blue
|
||||
!set RGB_3_F = $A4A7A2 ; light gray
|
||||
|
||||
; #4 - a Colodore palette, values taken from VICE emulator, based on http://www.colodore.com/
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_4_0 = $000000 ; black
|
||||
!set RGB_4_1 = $FFFFFF ; white
|
||||
!set RGB_4_2 = $96282E ; red
|
||||
!set RGB_4_3 = $5BD6CE ; cyan
|
||||
!set RGB_4_4 = $9F2DAD ; purple / magenta
|
||||
!set RGB_4_5 = $41B936 ; green
|
||||
!set RGB_4_6 = $2724C4 ; blue
|
||||
!set RGB_4_7 = $EFF347 ; yellow
|
||||
!set RGB_4_8 = $9F4815 ; orange
|
||||
!set RGB_4_9 = $5E3500 ; brown
|
||||
!set RGB_4_A = $DA5F66 ; light red / pink
|
||||
!set RGB_4_B = $474747 ; dark grey
|
||||
!set RGB_4_C = $787878 ; medium grey
|
||||
!set RGB_4_D = $91FF84 ; light green
|
||||
!set RGB_4_E = $6864FF ; light blue
|
||||
!set RGB_4_F = $AEAEAE ; light gray
|
||||
|
||||
; #5 - a Deekay palette, values taken from VICE emulator
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_5_0 = $000000 ; black
|
||||
!set RGB_5_1 = $FFFFFF ; white
|
||||
!set RGB_5_2 = $882000 ; red
|
||||
!set RGB_5_3 = $68D0A8 ; cyan
|
||||
!set RGB_5_4 = $A838A0 ; purple / magenta
|
||||
!set RGB_5_5 = $50B818 ; green
|
||||
!set RGB_5_6 = $181090 ; blue
|
||||
!set RGB_5_7 = $F0E858 ; yellow
|
||||
!set RGB_5_8 = $A04800 ; orange
|
||||
!set RGB_5_9 = $472B1B ; brown
|
||||
!set RGB_5_A = $C87870 ; light red / pink
|
||||
!set RGB_5_B = $484848 ; dark grey
|
||||
!set RGB_5_C = $808080 ; medium grey
|
||||
!set RGB_5_D = $98FF98 ; light green
|
||||
!set RGB_5_E = $5090D0 ; light blue
|
||||
!set RGB_5_F = $B8B8B8 ; light gray
|
||||
|
||||
|
||||
; Macros to convert colors to C65/M65 palette / greyscale palette (CCIR 601 conversion)
|
||||
|
||||
!macro RGB_R .x { !byte ((((^.x & $0F) * $10) + ((^.x & $F0) / $10)) & %11101111) }
|
||||
!macro RGB_G .x { !byte (((>.x & $0F) * $10) + ((>.x & $F0) / $10)) }
|
||||
!macro RGB_B .x { !byte (((<.x & $0F) * $10) + ((<.x & $F0) / $10)) }
|
||||
|
||||
!macro GSCAL .x {
|
||||
!set tmp = int(0.2989 * (^.x) + 0.5870 * (>.x) + 0.1140 * (<.x))
|
||||
!if (tmp > $FF) { !set tmp = $FF }
|
||||
!byte (((tmp & $0F) * $10) + ((tmp & $F0) / $10)) & %11101111
|
||||
}
|
||||
|
||||
; Set 1
|
||||
|
||||
m65_colorset_1:
|
||||
|
||||
+RGB_R RGB_1_0
|
||||
+RGB_R RGB_1_1
|
||||
+RGB_R RGB_1_2
|
||||
+RGB_R RGB_1_3
|
||||
+RGB_R RGB_1_4
|
||||
+RGB_R RGB_1_5
|
||||
+RGB_R RGB_1_6
|
||||
+RGB_R RGB_1_7
|
||||
+RGB_R RGB_1_8
|
||||
+RGB_R RGB_1_9
|
||||
+RGB_R RGB_1_A
|
||||
+RGB_R RGB_1_B
|
||||
+RGB_R RGB_1_C
|
||||
+RGB_R RGB_1_D
|
||||
+RGB_R RGB_1_E
|
||||
+RGB_R RGB_1_F
|
||||
|
||||
+RGB_G RGB_1_0
|
||||
+RGB_G RGB_1_1
|
||||
+RGB_G RGB_1_2
|
||||
+RGB_G RGB_1_3
|
||||
+RGB_G RGB_1_4
|
||||
+RGB_G RGB_1_5
|
||||
+RGB_G RGB_1_6
|
||||
+RGB_G RGB_1_7
|
||||
+RGB_G RGB_1_8
|
||||
+RGB_G RGB_1_9
|
||||
+RGB_G RGB_1_A
|
||||
+RGB_G RGB_1_B
|
||||
+RGB_G RGB_1_C
|
||||
+RGB_G RGB_1_D
|
||||
+RGB_G RGB_1_E
|
||||
+RGB_G RGB_1_F
|
||||
|
||||
+RGB_B RGB_1_0
|
||||
+RGB_B RGB_1_1
|
||||
+RGB_B RGB_1_2
|
||||
+RGB_B RGB_1_3
|
||||
+RGB_B RGB_1_4
|
||||
+RGB_B RGB_1_5
|
||||
+RGB_B RGB_1_6
|
||||
+RGB_B RGB_1_7
|
||||
+RGB_B RGB_1_8
|
||||
+RGB_B RGB_1_9
|
||||
+RGB_B RGB_1_A
|
||||
+RGB_B RGB_1_B
|
||||
+RGB_B RGB_1_C
|
||||
+RGB_B RGB_1_D
|
||||
+RGB_B RGB_1_E
|
||||
+RGB_B RGB_1_F
|
||||
|
||||
+GSCAL RGB_1_0
|
||||
+GSCAL RGB_1_1
|
||||
+GSCAL RGB_1_2
|
||||
+GSCAL RGB_1_3
|
||||
+GSCAL RGB_1_4
|
||||
+GSCAL RGB_1_5
|
||||
+GSCAL RGB_1_6
|
||||
+GSCAL RGB_1_7
|
||||
+GSCAL RGB_1_8
|
||||
+GSCAL RGB_1_9
|
||||
+GSCAL RGB_1_A
|
||||
+GSCAL RGB_1_B
|
||||
+GSCAL RGB_1_C
|
||||
+GSCAL RGB_1_D
|
||||
+GSCAL RGB_1_E
|
||||
+GSCAL RGB_1_F
|
||||
|
||||
; Set 2
|
||||
|
||||
m65_colorset_2:
|
||||
|
||||
+RGB_R RGB_2_0
|
||||
+RGB_R RGB_2_1
|
||||
+RGB_R RGB_2_2
|
||||
+RGB_R RGB_2_3
|
||||
+RGB_R RGB_2_4
|
||||
+RGB_R RGB_2_5
|
||||
+RGB_R RGB_2_6
|
||||
+RGB_R RGB_2_7
|
||||
+RGB_R RGB_2_8
|
||||
+RGB_R RGB_2_9
|
||||
+RGB_R RGB_2_A
|
||||
+RGB_R RGB_2_B
|
||||
+RGB_R RGB_2_C
|
||||
+RGB_R RGB_2_D
|
||||
+RGB_R RGB_2_E
|
||||
+RGB_R RGB_2_F
|
||||
|
||||
+RGB_G RGB_2_0
|
||||
+RGB_G RGB_2_1
|
||||
+RGB_G RGB_2_2
|
||||
+RGB_G RGB_2_3
|
||||
+RGB_G RGB_2_4
|
||||
+RGB_G RGB_2_5
|
||||
+RGB_G RGB_2_6
|
||||
+RGB_G RGB_2_7
|
||||
+RGB_G RGB_2_8
|
||||
+RGB_G RGB_2_9
|
||||
+RGB_G RGB_2_A
|
||||
+RGB_G RGB_2_B
|
||||
+RGB_G RGB_2_C
|
||||
+RGB_G RGB_2_D
|
||||
+RGB_G RGB_2_E
|
||||
+RGB_G RGB_2_F
|
||||
|
||||
+RGB_B RGB_2_0
|
||||
+RGB_B RGB_2_1
|
||||
+RGB_B RGB_2_2
|
||||
+RGB_B RGB_2_3
|
||||
+RGB_B RGB_2_4
|
||||
+RGB_B RGB_2_5
|
||||
+RGB_B RGB_2_6
|
||||
+RGB_B RGB_2_7
|
||||
+RGB_B RGB_2_8
|
||||
+RGB_B RGB_2_9
|
||||
+RGB_B RGB_2_A
|
||||
+RGB_B RGB_2_B
|
||||
+RGB_B RGB_2_C
|
||||
+RGB_B RGB_2_D
|
||||
+RGB_B RGB_2_E
|
||||
+RGB_B RGB_2_F
|
||||
|
||||
+GSCAL RGB_2_0
|
||||
+GSCAL RGB_2_1
|
||||
+GSCAL RGB_2_2
|
||||
+GSCAL RGB_2_3
|
||||
+GSCAL RGB_2_4
|
||||
+GSCAL RGB_2_5
|
||||
+GSCAL RGB_2_6
|
||||
+GSCAL RGB_2_7
|
||||
+GSCAL RGB_2_8
|
||||
+GSCAL RGB_2_9
|
||||
+GSCAL RGB_2_A
|
||||
+GSCAL RGB_2_B
|
||||
+GSCAL RGB_2_C
|
||||
+GSCAL RGB_2_D
|
||||
+GSCAL RGB_2_E
|
||||
+GSCAL RGB_2_F
|
||||
|
||||
; Set 3
|
||||
|
||||
m65_colorset_3:
|
||||
|
||||
+RGB_R RGB_3_0
|
||||
+RGB_R RGB_3_1
|
||||
+RGB_R RGB_3_2
|
||||
+RGB_R RGB_3_3
|
||||
+RGB_R RGB_3_4
|
||||
+RGB_R RGB_3_5
|
||||
+RGB_R RGB_3_6
|
||||
+RGB_R RGB_3_7
|
||||
+RGB_R RGB_3_8
|
||||
+RGB_R RGB_3_9
|
||||
+RGB_R RGB_3_A
|
||||
+RGB_R RGB_3_B
|
||||
+RGB_R RGB_3_C
|
||||
+RGB_R RGB_3_D
|
||||
+RGB_R RGB_3_E
|
||||
+RGB_R RGB_3_F
|
||||
|
||||
+RGB_G RGB_3_0
|
||||
+RGB_G RGB_3_1
|
||||
+RGB_G RGB_3_2
|
||||
+RGB_G RGB_3_3
|
||||
+RGB_G RGB_3_4
|
||||
+RGB_G RGB_3_5
|
||||
+RGB_G RGB_3_6
|
||||
+RGB_G RGB_3_7
|
||||
+RGB_G RGB_3_8
|
||||
+RGB_G RGB_3_9
|
||||
+RGB_G RGB_3_A
|
||||
+RGB_G RGB_3_B
|
||||
+RGB_G RGB_3_C
|
||||
+RGB_G RGB_3_D
|
||||
+RGB_G RGB_3_E
|
||||
+RGB_G RGB_3_F
|
||||
|
||||
+RGB_B RGB_3_0
|
||||
+RGB_B RGB_3_1
|
||||
+RGB_B RGB_3_2
|
||||
+RGB_B RGB_3_3
|
||||
+RGB_B RGB_3_4
|
||||
+RGB_B RGB_3_5
|
||||
+RGB_B RGB_3_6
|
||||
+RGB_B RGB_3_7
|
||||
+RGB_B RGB_3_8
|
||||
+RGB_B RGB_3_9
|
||||
+RGB_B RGB_3_A
|
||||
+RGB_B RGB_3_B
|
||||
+RGB_B RGB_3_C
|
||||
+RGB_B RGB_3_D
|
||||
+RGB_B RGB_3_E
|
||||
+RGB_B RGB_3_F
|
||||
|
||||
+GSCAL RGB_3_0
|
||||
+GSCAL RGB_3_1
|
||||
+GSCAL RGB_3_2
|
||||
+GSCAL RGB_3_3
|
||||
+GSCAL RGB_3_4
|
||||
+GSCAL RGB_3_5
|
||||
+GSCAL RGB_3_6
|
||||
+GSCAL RGB_3_7
|
||||
+GSCAL RGB_3_8
|
||||
+GSCAL RGB_3_9
|
||||
+GSCAL RGB_3_A
|
||||
+GSCAL RGB_3_B
|
||||
+GSCAL RGB_3_C
|
||||
+GSCAL RGB_3_D
|
||||
+GSCAL RGB_3_E
|
||||
+GSCAL RGB_3_F
|
||||
|
||||
; Set 4
|
||||
|
||||
m65_colorset_4:
|
||||
|
||||
+RGB_R RGB_4_0
|
||||
+RGB_R RGB_4_1
|
||||
+RGB_R RGB_4_2
|
||||
+RGB_R RGB_4_3
|
||||
+RGB_R RGB_4_4
|
||||
+RGB_R RGB_4_5
|
||||
+RGB_R RGB_4_6
|
||||
+RGB_R RGB_4_7
|
||||
+RGB_R RGB_4_8
|
||||
+RGB_R RGB_4_9
|
||||
+RGB_R RGB_4_A
|
||||
+RGB_R RGB_4_B
|
||||
+RGB_R RGB_4_C
|
||||
+RGB_R RGB_4_D
|
||||
+RGB_R RGB_4_E
|
||||
+RGB_R RGB_4_F
|
||||
|
||||
+RGB_G RGB_4_0
|
||||
+RGB_G RGB_4_1
|
||||
+RGB_G RGB_4_2
|
||||
+RGB_G RGB_4_3
|
||||
+RGB_G RGB_4_4
|
||||
+RGB_G RGB_4_5
|
||||
+RGB_G RGB_4_6
|
||||
+RGB_G RGB_4_7
|
||||
+RGB_G RGB_4_8
|
||||
+RGB_G RGB_4_9
|
||||
+RGB_G RGB_4_A
|
||||
+RGB_G RGB_4_B
|
||||
+RGB_G RGB_4_C
|
||||
+RGB_G RGB_4_D
|
||||
+RGB_G RGB_4_E
|
||||
+RGB_G RGB_4_F
|
||||
|
||||
+RGB_B RGB_4_0
|
||||
+RGB_B RGB_4_1
|
||||
+RGB_B RGB_4_2
|
||||
+RGB_B RGB_4_3
|
||||
+RGB_B RGB_4_4
|
||||
+RGB_B RGB_4_5
|
||||
+RGB_B RGB_4_6
|
||||
+RGB_B RGB_4_7
|
||||
+RGB_B RGB_4_8
|
||||
+RGB_B RGB_4_9
|
||||
+RGB_B RGB_4_A
|
||||
+RGB_B RGB_4_B
|
||||
+RGB_B RGB_4_C
|
||||
+RGB_B RGB_4_D
|
||||
+RGB_B RGB_4_E
|
||||
+RGB_B RGB_4_F
|
||||
|
||||
+GSCAL RGB_4_0
|
||||
+GSCAL RGB_4_1
|
||||
+GSCAL RGB_4_2
|
||||
+GSCAL RGB_4_3
|
||||
+GSCAL RGB_4_4
|
||||
+GSCAL RGB_4_5
|
||||
+GSCAL RGB_4_6
|
||||
+GSCAL RGB_4_7
|
||||
+GSCAL RGB_4_8
|
||||
+GSCAL RGB_4_9
|
||||
+GSCAL RGB_4_A
|
||||
+GSCAL RGB_4_B
|
||||
+GSCAL RGB_4_C
|
||||
+GSCAL RGB_4_D
|
||||
+GSCAL RGB_4_E
|
||||
+GSCAL RGB_4_F
|
||||
|
||||
; Set 5
|
||||
|
||||
m65_colorset_5:
|
||||
|
||||
+RGB_R RGB_5_0
|
||||
+RGB_R RGB_5_1
|
||||
+RGB_R RGB_5_2
|
||||
+RGB_R RGB_5_3
|
||||
+RGB_R RGB_5_4
|
||||
+RGB_R RGB_5_5
|
||||
+RGB_R RGB_5_6
|
||||
+RGB_R RGB_5_7
|
||||
+RGB_R RGB_5_8
|
||||
+RGB_R RGB_5_9
|
||||
+RGB_R RGB_5_A
|
||||
+RGB_R RGB_5_B
|
||||
+RGB_R RGB_5_C
|
||||
+RGB_R RGB_5_D
|
||||
+RGB_R RGB_5_E
|
||||
+RGB_R RGB_5_F
|
||||
|
||||
+RGB_G RGB_5_0
|
||||
+RGB_G RGB_5_1
|
||||
+RGB_G RGB_5_2
|
||||
+RGB_G RGB_5_3
|
||||
+RGB_G RGB_5_4
|
||||
+RGB_G RGB_5_5
|
||||
+RGB_G RGB_5_6
|
||||
+RGB_G RGB_5_7
|
||||
+RGB_G RGB_5_8
|
||||
+RGB_G RGB_5_9
|
||||
+RGB_G RGB_5_A
|
||||
+RGB_G RGB_5_B
|
||||
+RGB_G RGB_5_C
|
||||
+RGB_G RGB_5_D
|
||||
+RGB_G RGB_5_E
|
||||
+RGB_G RGB_5_F
|
||||
|
||||
+RGB_B RGB_5_0
|
||||
+RGB_B RGB_5_1
|
||||
+RGB_B RGB_5_2
|
||||
+RGB_B RGB_5_3
|
||||
+RGB_B RGB_5_4
|
||||
+RGB_B RGB_5_5
|
||||
+RGB_B RGB_5_6
|
||||
+RGB_B RGB_5_7
|
||||
+RGB_B RGB_5_8
|
||||
+RGB_B RGB_5_9
|
||||
+RGB_B RGB_5_A
|
||||
+RGB_B RGB_5_B
|
||||
+RGB_B RGB_5_C
|
||||
+RGB_B RGB_5_D
|
||||
+RGB_B RGB_5_E
|
||||
+RGB_B RGB_5_F
|
||||
|
||||
+GSCAL RGB_5_0
|
||||
+GSCAL RGB_5_1
|
||||
+GSCAL RGB_5_2
|
||||
+GSCAL RGB_5_3
|
||||
+GSCAL RGB_5_4
|
||||
+GSCAL RGB_5_5
|
||||
+GSCAL RGB_5_6
|
||||
+GSCAL RGB_5_7
|
||||
+GSCAL RGB_5_8
|
||||
+GSCAL RGB_5_9
|
||||
+GSCAL RGB_5_A
|
||||
+GSCAL RGB_5_B
|
||||
+GSCAL RGB_5_C
|
||||
+GSCAL RGB_5_D
|
||||
+GSCAL RGB_5_E
|
||||
+GSCAL RGB_5_F
|
||||
@@ -67,7 +67,7 @@ m65_mode65:
|
||||
|
||||
jsr vicii_init
|
||||
jsr viciv_init
|
||||
jsr m65_reset_palette
|
||||
jsr m65_colorset_reset
|
||||
|
||||
; Initialize various memory structures
|
||||
|
||||
|
||||
@@ -1,244 +0,0 @@
|
||||
;; #LAYOUT# M65 KERNAL_1 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
|
||||
!if (CONFIG_VIC_PALETTE = 0) { !set CONFIG_VIC_PALETTE = 4 } ; override palette to default value
|
||||
|
||||
!if (CONFIG_VIC_PALETTE = 1) {
|
||||
|
||||
; Original C65 palette, taken from C65 manual
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_0 = $000000 ; black
|
||||
!set RGB_1 = $FFFFFF ; white
|
||||
!set RGB_2 = $FF0000 ; red
|
||||
!set RGB_3 = $00FFFF ; cyan
|
||||
!set RGB_4 = $FF00FF ; purple / magenta
|
||||
!set RGB_5 = $00FF00 ; green
|
||||
!set RGB_6 = $0000FF ; blue
|
||||
!set RGB_7 = $FFFF00 ; yellow
|
||||
!set RGB_8 = $FF6600 ; orange
|
||||
!set RGB_9 = $AA4400 ; brown
|
||||
!set RGB_A = $FF7777 ; light red / pink
|
||||
!set RGB_B = $555555 ; dark grey
|
||||
!set RGB_C = $888888 ; medium grey
|
||||
!set RGB_D = $99FF99 ; light green
|
||||
!set RGB_E = $9999FF ; light blue
|
||||
!set RGB_F = $BBBBBB ; light gray
|
||||
|
||||
} else if (CONFIG_VIC_PALETTE = 2) {
|
||||
|
||||
; A Colodore palette, values taken from VICE emulator
|
||||
; Based on http://www.colodore.com/
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_0 = $000000 ; black
|
||||
!set RGB_1 = $FFFFFF ; white
|
||||
!set RGB_2 = $96282E ; red
|
||||
!set RGB_3 = $5BD6CE ; cyan
|
||||
!set RGB_4 = $9F2DAD ; purple / magenta
|
||||
!set RGB_5 = $41B936 ; green
|
||||
!set RGB_6 = $2724C4 ; blue
|
||||
!set RGB_7 = $EFF347 ; yellow
|
||||
!set RGB_8 = $9F4815 ; orange
|
||||
!set RGB_9 = $5E3500 ; brown
|
||||
!set RGB_A = $DA5F66 ; light red / pink
|
||||
!set RGB_B = $474747 ; dark grey
|
||||
!set RGB_C = $787878 ; medium grey
|
||||
!set RGB_D = $91FF84 ; light green
|
||||
!set RGB_E = $6864FF ; light blue
|
||||
!set RGB_F = $AEAEAE ; light gray
|
||||
|
||||
} else if (CONFIG_VIC_PALETTE = 3) {
|
||||
|
||||
; A VICE emulator palette
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_0 = $000000 ; black
|
||||
!set RGB_1 = $FDFEFC ; white
|
||||
!set RGB_2 = $BE1A24 ; red
|
||||
!set RGB_3 = $30E6C6 ; cyan
|
||||
!set RGB_4 = $B41AE2 ; purple / magenta
|
||||
!set RGB_5 = $1FD21E ; green
|
||||
!set RGB_6 = $211BAE ; blue
|
||||
!set RGB_7 = $DFF60A ; yellow
|
||||
!set RGB_8 = $B84104 ; orange
|
||||
!set RGB_9 = $6A3304 ; brown
|
||||
!set RGB_A = $FE4A57 ; light red / pink
|
||||
!set RGB_B = $424540 ; dark grey
|
||||
!set RGB_C = $70746F ; medium grey
|
||||
!set RGB_D = $59FE59 ; light green
|
||||
!set RGB_E = $5F53FE ; light blue
|
||||
!set RGB_F = $A4A7A2 ; light gray
|
||||
|
||||
} else if (CONFIG_VIC_PALETTE = 4) {
|
||||
|
||||
; A Frodo palette, values taken from VICE emulator
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_0 = $000000 ; black
|
||||
!set RGB_1 = $FDFEFC ; white
|
||||
!set RGB_2 = $BE1A24 ; red
|
||||
!set RGB_3 = $30E6C6 ; cyan
|
||||
!set RGB_4 = $B41AE2 ; purple / magenta
|
||||
!set RGB_5 = $1FD21E ; green
|
||||
!set RGB_6 = $211BAE ; blue
|
||||
!set RGB_7 = $DFF60A ; yellow
|
||||
!set RGB_8 = $B84104 ; orange
|
||||
!set RGB_9 = $6A3304 ; brown
|
||||
!set RGB_A = $FE4A57 ; light red / pink
|
||||
!set RGB_B = $424540 ; dark grey
|
||||
!set RGB_C = $70746F ; medium grey
|
||||
!set RGB_D = $59FE59 ; light green
|
||||
!set RGB_E = $5F53FE ; light blue
|
||||
!set RGB_F = $A4A7A2 ; light gray
|
||||
|
||||
|
||||
} else if (CONFIG_VIC_PALETTE = 5) {
|
||||
|
||||
; A Deekay palette, values taken from VICE emulator
|
||||
|
||||
|
||||
; RRGGBB
|
||||
!set RGB_0 = $000000 ; black
|
||||
!set RGB_1 = $FFFFFF ; white
|
||||
!set RGB_2 = $882000 ; red
|
||||
!set RGB_3 = $68D0A8 ; cyan
|
||||
!set RGB_4 = $A838A0 ; purple / magenta
|
||||
!set RGB_5 = $50B818 ; green
|
||||
!set RGB_6 = $181090 ; blue
|
||||
!set RGB_7 = $F0E858 ; yellow
|
||||
!set RGB_8 = $A04800 ; orange
|
||||
!set RGB_9 = $472B1B ; brown
|
||||
!set RGB_A = $C87870 ; light red / pink
|
||||
!set RGB_B = $484848 ; dark grey
|
||||
!set RGB_C = $808080 ; medium grey
|
||||
!set RGB_D = $98FF98 ; light green
|
||||
!set RGB_E = $5090D0 ; light blue
|
||||
!set RGB_F = $B8B8B8 ; light gray
|
||||
|
||||
} else { !error "Unknown palette ID" }
|
||||
|
||||
|
||||
|
||||
m65_reset_palette:
|
||||
|
||||
; Enable RAM palette
|
||||
|
||||
lda VIC_CTRLA
|
||||
ora #$04
|
||||
sta VIC_CTRLA
|
||||
|
||||
|
||||
; XXX loop instead
|
||||
|
||||
lda #%11000000
|
||||
sta VIC_PALSEL
|
||||
jsr m65_reset_palette_selected
|
||||
|
||||
lda #%10000000
|
||||
sta VIC_PALSEL
|
||||
jsr m65_reset_palette_selected
|
||||
|
||||
lda #%01000000
|
||||
sta VIC_PALSEL
|
||||
jsr m65_reset_palette_selected
|
||||
|
||||
lda #%00000000
|
||||
sta VIC_PALSEL
|
||||
jsr m65_reset_palette_selected
|
||||
|
||||
rts
|
||||
|
||||
m65_reset_palette_selected:
|
||||
|
||||
; First clear the entire palette
|
||||
|
||||
lda #$00
|
||||
ldx #$00
|
||||
@1:
|
||||
sta PALETTE_R, x
|
||||
sta PALETTE_G, x
|
||||
sta PALETTE_B, x
|
||||
|
||||
inx
|
||||
bne @1
|
||||
|
||||
; Now set default colors
|
||||
|
||||
ldx #$0F
|
||||
@2:
|
||||
lda m65_COL_R,x
|
||||
sta $D100, x
|
||||
lda m65_COL_G,x
|
||||
sta $D200, x
|
||||
lda m65_COL_B,x
|
||||
sta $D300, x
|
||||
dex
|
||||
bpl @2
|
||||
|
||||
rts
|
||||
|
||||
; Macros to convert colors to C65/M65 palette
|
||||
|
||||
!macro COL_R .x { !byte ((((^.x & $0F) * $10) + ((^.x & $F0) / $10)) & %11101111) }
|
||||
!macro COL_G .x { !byte (((>.x & $0F) * $10) + ((>.x & $F0) / $10)) }
|
||||
!macro COL_B .x { !byte (((<.x & $0F) * $10) + ((<.x & $F0) / $10)) }
|
||||
|
||||
m65_COL_R:
|
||||
|
||||
+COL_R RGB_0
|
||||
+COL_R RGB_1
|
||||
+COL_R RGB_2
|
||||
+COL_R RGB_3
|
||||
+COL_R RGB_4
|
||||
+COL_R RGB_5
|
||||
+COL_R RGB_6
|
||||
+COL_R RGB_7
|
||||
+COL_R RGB_8
|
||||
+COL_R RGB_9
|
||||
+COL_R RGB_A
|
||||
+COL_R RGB_B
|
||||
+COL_R RGB_C
|
||||
+COL_R RGB_D
|
||||
+COL_R RGB_E
|
||||
+COL_R RGB_F
|
||||
|
||||
m65_COL_G:
|
||||
|
||||
+COL_G RGB_0
|
||||
+COL_G RGB_1
|
||||
+COL_G RGB_2
|
||||
+COL_G RGB_3
|
||||
+COL_G RGB_4
|
||||
+COL_G RGB_5
|
||||
+COL_G RGB_6
|
||||
+COL_G RGB_7
|
||||
+COL_G RGB_8
|
||||
+COL_G RGB_9
|
||||
+COL_G RGB_A
|
||||
+COL_G RGB_B
|
||||
+COL_G RGB_C
|
||||
+COL_G RGB_D
|
||||
+COL_G RGB_E
|
||||
+COL_G RGB_F
|
||||
|
||||
m65_COL_B:
|
||||
|
||||
+COL_B RGB_0
|
||||
+COL_B RGB_1
|
||||
+COL_B RGB_2
|
||||
+COL_B RGB_3
|
||||
+COL_B RGB_4
|
||||
+COL_B RGB_5
|
||||
+COL_B RGB_6
|
||||
+COL_B RGB_7
|
||||
+COL_B RGB_8
|
||||
+COL_B RGB_9
|
||||
+COL_B RGB_A
|
||||
+COL_B RGB_B
|
||||
+COL_B RGB_C
|
||||
+COL_B RGB_D
|
||||
+COL_B RGB_E
|
||||
+COL_B RGB_F
|
||||
@@ -34,4 +34,4 @@ M65_JSETWIN_N:
|
||||
M65_JSETWIN_Y:
|
||||
jsr M65_SETWIN_Y
|
||||
|
||||
; XXX add M65_HOME
|
||||
; XXX add M65_HOME, m65_colorset
|
||||
@@ -203,6 +203,7 @@ const StringEntryList GLOBAL_Keywords_04 = { ListType::KEYWORDS, "keywords_04",
|
||||
{ false, false, true, false, false, "K04_02", "MONITOR", }, // Amos Professional Manual, Command Index
|
||||
{ false, false, true, false, false, "K04_03", "BOOTCPM", }, // Not present in CBM BASIC dialects, Open ROMs specific
|
||||
{ false, false, true, false, false, "K04_04", "JOYCRSR", }, // Not present in CBM BASIC dialects, Open ROMs specific
|
||||
{ false, false, true, false, false, "K04_05", "COLORSET", }, // Not present in CBM BASIC dialects, Open ROMs specific
|
||||
|
||||
} };
|
||||
|
||||
|
||||
Reference in new issue
Block a user