I'm not sure if I posted this in the right part of PGC forums, but whatever.
So, I've been opening up some Hummer Team games with a
hex editor text editor and found some (kinda) interesting stuff.
Apparently, there's a TON of uncompiled source code in Kart Fighter. (I put it in a spoiler because it's a lot of code). :
Spoiler: click to toggle
Spoiler: click to toggle
- Code:
-
sta Chreg3
lda (r0),y
sta Chreg4
•–M 0ß–My
sta Chreg5
rts
;;--------------------------------------
;;- SetIpval:
;;- inpmß–Mccò©–Mress.
;;- r0 = $2002.
;;--------------------------------------
SetIpval:
asl a
tax
™–M ¨–M #$00
lda (r0),y ;;; lda $2002.
ldy #$04
lda Ip_code
asl a
asl =¨–M ‹––M ;;; Ip_code * 4.
clc ;;; (Ip_code*4)+pat_address
adc pat_address+1,x ;;; lo.
sta —–Mˇˇ hÆ–M #$00
adc pat_address,x ;;; hi.
sta (r0),y ;;; store $2006 hi.
lda r2
sta•Æ–Mr0–∞–M ;;; store $2006 lo.
iny
;;;----- read ip_val.
lda (r0),y
lda (r0),y
sta J±–Mun8≥–M ;;; set irq.
lda (r0),y
sta col_ndx ;;; set color.
lda (r0),y
,¥–M †µ–M ;;; set music.
lda #$00
sta col_msk
sta fade_cnt ;;; initial fade.∂–M ∏–M ;;--------------------------------------
;;- Setcheckcode:
;;- input : Acc pat address.
;;- ø∏–M p∫–M2002.
;;--------------------------------------
Setcheckcode:
asl a
tax
ldy #$00
lddª–M(rÿº–M ;;; lda $2002.
iny
iny
lda Ip_code
asl a
asl a ;;; Ip_code RΩ–M @ø–Mc
adc pat_address+1,x ;;; lo
sta (r0),y
lda #$00
adc pat_address,x ;;; (Ip_code*4)∫ø–Mdd®¡–M sta (r0),y ;;; store $2006
iny
;;;----- read ip_val.
lda (r0),y
sta _"¬–M ƒ–M ;;; set irq.
lda (r0),y
sta col_ndx ;;; set color.
lda (r0),y
staMƒ–MMu ;;; set music.
rts
;==============================================================================
;= BacktˇˇC3ck to set c3.
;= r0=$2002.
;==============================================================================
Backto_C3:
lˇˇ $00
lda (r0),y ;;; lda $2002
ldy #$04
lda pat_address+4
sta (r0),y ;;; stoˇˇ $ hi.
lda pat_address+5
sta (r0),y ;;; store $2006 lo.
iny
lda (r0),y ;;; RESETˇˇ20x∆–Mb.
;;;
ldx #$00
?c10 lda (r0),y ;;; read $2007 c3 sub.
cmp #$ff
beqµ∆–Mc0 sta _DBuffer,x ;;; store c1 sub to ram.
inx
bne ?c10
?c00 ;;;==================== seting over.ˇˇ ‡»–Ma (r0),y ;;; jmp to ram c1 sub.
sta a0 ;;; lo
lda (r0),y
pha …–M HÀ–M; hi
lda a0
pha ;;; lo
rts
;;=====================================================ÖÀ–M==∞Õ–M========
;;= PAT ROM DATA: PAT ROM ADDRESS.
;;= SEG3_$3E8 BANK_VAL TABLE. ($0E48).
;;= ÌÕ–MEG––MP_VAL TABLE. ($1170).
;;= SEG5_$268 C3_SUB (RAM). ($1668).
;;=
;;= SEG1_$208 CHECK CODE $F8 ($0608í––M= Ä“–M SEG7_$3ff CHECK CODE $8F ($1FF8).
;;=============================================================================
pat_address:
±”–M $0e,$48 ;;; 0 bank_val address.
db $11,$70 ;;; 1 ip_val address.
db $16,$68 ;;; 2 c3_suˇˇadË‘–M db $06,$08 ;;; 3 check code address.
db $1f,$f8 ;;; 4 check code addrsss.
COMMENT b’–M==P◊–M==================================================================
;;= INITIAL MC2 REG...
;;======================================ç◊–M==∏Ÿ–M=======================
init_c2:
lda #$02
sta $b002
lda #$0a
sta $b003 ;;2⁄–Mse ‹–M ;;;
lda #$05
sta $c002
lda #$0b
sta $c003 ;;; pat seg3.
;;;
ö‹–M àfi–M #$07
sta $d000
lda #$0b
sta $d001 ;;; pat seg4.
;;;
lda #$06
fl–Mst‡–M002
lda #$0a
sta $d003 ;;; pat seg5.
;;;
lda #$01
sta $e002
j·–Ma X„–M
sta $e003 ;;; pat seg7.
;;;
rts
^
.ENDS
PAGE BACKGROUND ‰–M.
¿Â–M========================================================================
page_scr:
dw scr_t01,$2020,scr_t02,$2424 ˝Â–ME dw scr_o01,$2020,scr_o02,$2424 ;OPTION.
dw scr_s01,$2020,scr_s01,$2424 ;CHOISE 1 AND VS
dw ˇˇ (Ë–M,$2020,scr_s01,$2424 ;CHOISE 2 AND VS
dw scr_r01,$2020,scr_r02,$2424 ;RANKING.
dw scr_c01,eË–MscêÍ–M424 ;CONTINUE. AND OVER.
dw scr_e01,$2020,scr_e02,$2424 ;ENDING.
dw scr_s01,$2020,scr_s01,$2ÕÍ–M ¯Ï–MSS 2 VS PAGE.
INCLUDE D00.DAT
.ENDS
lda s1
clc
adc x1
sta 5Ì–M `Ô–M;;; neøøøøøøø
;==============================================================================
;= Endsub:
;=========⁄Ô–M===========================================================
Endsu
Spoiler: click to toggle
- Code:
-
sta Delay
r’ˆ–M
: ;;; INITIAL END COLOR.
FADE_IN
inc sub_flow
rts
end2: ;;; END SPRITE FALL DOWN.
ˇˇ WNMI
dec _Yscroll
lda _Yscroll
cmp #$FF
bne ?e00
; lda #$ef
; sta _Ysˇˇol ;;; cross page.
dec _Yscroll+1
bpl ?e00
lda #$00
sta _Yscroll
sta _Yscrollˇˇ
inc sub_flow
?e00 rts
end3: ;;; COUNT DOWN .
lda tog1
and #DECISION ;;; if toggle to fˇˇe
bne ?e310
lda scounter
and #$1f
bne ?e300
;;; dec Delay
jmp ?e300 ˇˇ ;;; NO COUNT DOWN.
bne ?e300
?e310
inc sub_flow
?e300
rts
end4: ;;; FADEOUT END COLOR.
ˇˇ FOUT
lda #$00
sta $2001
sta r2001
sta sub_flow
sta main_flow
sta seˇˇru˘–M rts
lda #$05 ;;; level >= 4.
sta main_flow ;;; to ending.
rts
?R00 ldaÙ˘–M$0 ;;; to title.
sta main_flow
rts
; ;;;-------------------- SET DEMO FLAG AND COMPUTER FIGHTER.
; ldˇˇ 01
; sta demo_fg
; lda demo_ptr
; and #$07
; tay
; lda d_fighter,y
; sta _Naˇˇ
lda d_fighter+1,y
; sta _Name+1 ;;; set computer player.
; inc demo_ptr
; rts
;d_fighter:
; ˇˇ $83,$82,$84,$85,$86,$87,$88,$85,$81
COMMENT ^
rank4 ;;; FADE OUT AND TO TITLE.
FADE_OUT
ˇˇa h˚–M
sta sub_flow
lda #$00
sta main_flow ;;; to end test.
sta _Mselect
st•˚–M_Mct+1 ;;; clear title selection.
rts
^
lda #$80
sta _Name,x ;;; set computer playerˇˇ
sta _Mselect,x ;;; set computer player.
rts
ctu_5 ;;; GAME OVER.
WAIT_NMI
jsr end_cˇˇor»] lda scounter
and #$1f
bne ?v0
dec Delay ;;; GAME OVER COUNTER DOWN.
b|»] ? ;;;
lda #$00
sta sub_flow
; lda #$00
; sta _Mselect
; sta _Mselect+1 ˇˇ; j»]tle selection.
lda #$04
sta
Spoiler: click to toggle
- Code:
-
sta Chreg3
lda (r0),y
sta Chreg4
•–M 0ß–My
sta Chreg5
rts
;;--------------------------------------
;;- SetIpval:
;;- inpmß–Mccò©–Mress.
;;- r0 = $2002.
;;--------------------------------------
SetIpval:
asl a
tax
™–M ¨–M #$00
lda (r0),y ;;; lda $2002.
ldy #$04
lda Ip_code
asl a
asl =¨–M ‹––M ;;; Ip_code * 4.
clc ;;; (Ip_code*4)+pat_address
adc pat_address+1,x ;;; lo.
sta —–Mˇˇ hÆ–M #$00
adc pat_address,x ;;; hi.
sta (r0),y ;;; store $2006 hi.
lda r2
sta•Æ–Mr0–∞–M ;;; store $2006 lo.
iny
;;;----- read ip_val.
lda (r0),y
lda (r0),y
sta J±–Mun8≥–M ;;; set irq.
lda (r0),y
sta col_ndx ;;; set color.
lda (r0),y
,¥–M †µ–M ;;; set music.
lda #$00
sta col_msk
sta fade_cnt ;;; initial fade.∂–M ∏–M ;;--------------------------------------
;;- Setcheckcode:
;;- input : Acc pat address.
;;- ø∏–M p∫–M2002.
;;--------------------------------------
Setcheckcode:
asl a
tax
ldy #$00
lddª–M(rÿº–M ;;; lda $2002.
iny
iny
lda Ip_code
asl a
asl a ;;; Ip_code RΩ–M @ø–Mc
adc pat_address+1,x ;;; lo
sta (r0),y
lda #$00
adc pat_address,x ;;; (Ip_code*4)∫ø–Mdd®¡–M sta (r0),y ;;; store $2006
iny
n™)
Spoiler: click to toggle
- Code:
-
sta Delay
r’ˆ–M
: ;;; INITIAL END COLOR.
FADE_IN
inc sub_flow
rts
end2: ;;; END SPRITE FALL DOWN.
ˇˇ WNMI
dec _Yscroll
lda _Yscroll
cmp #$FF
bne ?e00
; lda #$ef
; sta _Ysˇˇol ;;; cross page.
dec _Yscroll+1
bpl ?e00
lda #$00
sta _Yscroll
sta _Yscrollˇˇ
inc sub_flow
?e00 rts
end3: ;;; COUNT DOWN .
lda tog1
and #DECISION ;;; if toggle to fˇˇe
bne ?e310
lda scounter
and #$1f
bne ?e300
;;; dec Delay
jmp ?e300 ˇˇ ;;; NO COUNT DOWN.
bne ?e300
?e310
inc sub_flow
?e300
rts
end4: ;;; FADEOUT END COLOR.
ˇˇ FOUT
lda #$00
sta $2001
sta r2001
sta sub_flow
sta main_flow
sta seˇˇru˘–M rts
lda #$05 ;;; level >= 4.
sta main_flow ;;; to ending.
rts
?R00 ldaÙ˘–M$0 ;;; to title.
sta main_flow
rts
; ;;;-------------------- SET DEMO FLAG AND COMPUTER FIGHTER.
; ldˇˇ 01
; sta demo_fg
; lda demo_ptr
; and #$07
; tay
; lda d_fighter,y
; sta _Naˇˇ
lda d_fighter+1,y
; sta _Name+1 ;;; set computer player.
; inc demo_ptr
; rts
;d_fighter:
; ˇˇ $83,$82,$84,$85,$86,$87,$88,$85,$81
COMMENT ^
rank4 ;;; FADE OUT AND TO TITLE.
FADE_OUT
ˇˇa h˚–M
sta sub_flow
lda #$00
sta main_flow ;;; to end test.
sta _Mselect
st•˚–M_Mct+1 ;;; clear title selection.
rts
^
lda #$80
sta _Name,x ;;; set computer playerˇˇ
sta _Mselect,x ;;; set computer player.
rts
ctu_5 ;;; GAME OVER.
WAIT_NMI
jsr end_cˇˇor»] lda scounter
and #$1f
bne ?v0
dec Delay ;;; GAME OVER COUNTER DOWN.
b|»] ? ;;;
lda #$00
sta sub_flow
; lda #$00
; sta _Mselect
; sta _Mselect+1 ˇˇ; j»]tle selection.
lda #$04
sta
Spoiler: click to toggle
- Code:
-
music.
lda #$00
sta col_msk
sta fade_cnt ;;; initial fade.∂–M ∏–M ;;--------------------------------------
;;- Setcheckcode:
;;- input : Acc pat address.
;;- ø∏–M p∫–M2002.
;;--------------------------------------
Setcheckcode:
asl a
tax
ldy #$00
lddª–M(rÿº–M ;;; lda $2002.
iny
iny
lda Ip_code
asl a
asl a ;;; Ip_code RΩ–M @ø–Mc
adc pat_address+1,x ;;; lo
sta (r0),y
lda #$00
adc pat_address,x ;;; (Ip_code*4)∫ø–Mdd®¡–M sta (r0),y ;;; store $2006
iny
Spoiler: click to toggle
- Code:
-
sta seˇˇru˘–M rts
lda #$05 ;;; level >= 4.
sta main_flow ;;; to ending.
rts
?R00 ldaÙ˘–M$0 ;;; to title.
sta main_flow
rts
; ;;;-------------------- SET DEMO FLAG AND COMPUTER FIGHTER.
; ldˇˇ 01
; sta demo_fg
; lda demo_ptr
; and #$07
; tay
; lda d_fighter,y
; sta _Naˇˇ
lda d_fighter+1,y
; sta _Name+1 ;;; set computer player.
; inc demo_ptr
; rts
;d_fighter:
; ˇˇ $83,$82,$84,$85,$86,$87,$88,$85,$81
COMMENT ^
rank4 ;;; FADE OUT AND TO TITLE.
FADE_OUT
ˇˇa h˚–M
sta sub_flow
lda #$00
sta main_flow ;;; to end test.
sta _Mselect
st•˚–M_Mct+1 ;;; clear title selection.
rts
^
lda #$80
sta _Name,x ;;; set computer playerˇˇ
sta _Mselect,x ;;; set computer player.
rts
ctu_5 ;;; GAME OVER.
WAIT_NMI
jsr end_cˇˇor»] lda scounter
and #$1f
bne ?v0
dec Delay ;;; GAME OVER COUNTER DOWN.
b|»] ? ;;;
lda #$00
sta sub_flow
; lda #$00
; sta _Mselect
; sta _Mselect+1 ˇˇ; j»]tle selection.
lda #$04
sta
Spoiler: click to toggle
- Code:
-
music.
lda #$00
sta col_msk
sta fade_cnt ;;; initial fade.∂–M ∏–M ;;--------------------------------------
;;- Setcheckcode:
;;- input : Acc pat address.
;;- ø∏–M p∫–M2002.
;;--------------------------------------
Setcheckcode:
asl a
tax
ldy #$00
lddª–M(rÿº–M ;;; lda $2002.
iny
iny
lda Ip_code
asl a
asl a ;;; Ip_code RΩ–M @ø–Mc
adc pat_address+1,x ;;; lo
sta (r0),y
lda #$00
adc pat_address,x ;;; (Ip_code*4)∫ø–Mdd®¡–M sta (r0),y ;;; store $2006
iny
Well, that's it for the uncompiled Kart Fighter code. Maybe I missed something, but probably not.
Anyway, somebody should probably look into this and see if there's anything interesting in it. I do programming, but not this low-level machine code stuff. :\
Next off, I found what might be some unused error messages in Somari.
The text "*** STACK OVERFLOW ***" appears five times in the ROM. A stack overflow is a kind of error that can happen in computers, so it seems like an error message. There's also one part that says "Invalid stack".
I also looked in The Hummer and Sonic 3D Blast 5 (the hacks of Somari) and in both of them, the "*** STACK OVERFLOW ***" message only shows up four times, and the "Invalid stack" message doesn't show up at all.
So... is that important? I'm not sure.