Sports Illustrated: Golf Classic uses Super Game Boy sound effects and has a very good soundtrack... there isn't much more.
Unused Super Game Boy Sounds#
The game has a SOUND table fully programmed for both A and B type sounds along with the recommended pitch/volume settings, as with the Tetris 2 (Game Boy) sound test. The game does not use B type sounds.
Game Genie code ??8-53B-7FA ID 00-30, 31-4A will replace the menu selection sound with any of the unused sounds.
There is also a routine that loads the unused mute command, and a separate routine that sets the unused SOUND bytes. Game Genie code ??6-1FF-E6A will set the unused bytes to any value.
Unused Text#
There is some weird copyright string at 20010 in game ROM:
19930610N.Nakano
filling empty area of one of the bank offset tables.
Uncompiled SNES Code#
For some reason, a large amount of uncompiled SNES assembly code is scattered around the ROM.
0x012D00
353 0000 ;
354 0000 ; General DMA transfer
355 0000 ;
0x013FD0
0
436 0000
0x014180
ds 1 ;Current screen number
441 0007 Key_delay ds 1 ;Key down flag (for toggle select)
442 0008
443 0008 Tran_x ds 2 ;Tranlsation X direction
444 00
0x01441C
49 0011 Angle_X ds 1
450 0012 Sin_ret ds 2
451 0014 Cos_ret ds 2
452 0016
demo.X65 ......PAGE 0009
LINE# LOC CODE
0x01441C
477 0035 clip_y_min ds 1 ;Clip limits for 3d-window
478 0036 clip_y_max ds 1
479 0037 clip_x_min ds 1
480 0038 clip_x_max ds 1
481 0039
482 0039 Screen_count ds 1
483 003A Vertex_count ds 2
484 003C
485 003C Idle ds 2
486 003E ;_____________________________________________________________________________
487 003E org $8000 ;Starts $8000 (mode 20)
488 8000
489 8000 Reset
490 8000 78 sei ;disable interupts
491 8001 18 clc ;clear carry
492 8002 FB xce ;goto 65816 mode
493 8003 5C 07 80 80 jmp ~resetfast ;force bank update
494 8007
495 8007 resetfast
497 8007 ;*****************************************************************************
498 8007 ;* *
499 8007 ;* sfxinit.sfx *
500 8007 ;* Super FamiCom Initialization file *
501 8007 ;* Programmed by: Wayne A. Shirk
0x017069
x ;
619 80F4 A9 00 x lda #00
620 80F6 8D 33 21 x sta SetIni ;
621 80F9 x ;
demo.X65 ......PAGE 0012
LINE# LOC CODE LINE
622 80F9 x ;
623 80F9 x ;*********************** Initialize PPU Registers *****************************
624 80F9 x ;
625 80F9 x
626 80F9 8D 00 42 x sta NmiTimEn ;
627 80FC 8D 01 42 x sta WrIO ;
628 80FF 8D 02 42 x sta WrMpyA ;
629 8102 8D 03 42 x sta WrMpyB ;
630 8105 8D 04 42 x sta WrDivL ;
631 8108 8D 05 42 x sta WrDivH ;
632 810B 8D 06 42 x sta WrDivB ;
633 810E 8D 07 42 x sta HTimeL ;
634 8111 8D 08 42 x sta HTimeH ;
635 8114 8D 09 42 x sta VTimeL ;
636 8117 8D 0A 42 x sta VTimeH ;
637 811A 8D 0B 42 x sta MDmaEn ;
638 811D 8D 0C 42 x sta HDmaEn ;
639 8120 8D 0D 42 x sta MemSel ;
640 8123 x
642 8123 AD 0D 42 x lda MemSel
643 8126 09 01 x ora #$01
644 8128 8D 0D 42 x sta MemSel ;Go to high speed
645 812B x ;******************************************************************************
646 812B x ; SNS Development manual.
647 812B x ;******************************************************************************
648 812B x Code_Start
649 812B A9 00 x lda #$00 ;Set BG Mode
650 812D 8D 05 21 x sta BgMode ;Mode 0
651 8130 A9 40 x lda #$40 ;Set BG Size & SC Data VRAM Address
652 8132 8D 07 21 x sta Bg1Sc ;Size=0, SC base=0
653 8135 A9 00 x lda #$00 ;BG Charter Name Addr in VRAM
654 8137 8D 0B 21 x sta Bg12NBA ;base=8k
655 813A A9 01 x lda #$01 ;Screen 1 main
656 813C 8D 2C 21 x sta TMain ;
657 813F A9 01 x lda #01 ;Turn on Auto Controller read
658 8141 8D 00 42 x sta NmiTimEn ;Turn off NMI
659 8144 x ;_________________________________________________________
660 8144 x ; Setup Translation values
661 8144 x ;_________________________________________________________
662 8144 x Def_Tran
663 8144 x Acc16
665 8144 C2 20 ax1 REP #$20
666 8146 ax
667 8146 A9 26 00 ax lda #38
668 8149 8D 0C 00 ax sta Tran_z
669 814C 9C 08 00 ax stz Tran_x
670 814F 9C 0A 00 ax stz Tran_y
671 8152 ax
672 8152 AF 00 80 81 ax lda ~Obj_cnt
673 8156 8D 3A 00 ax sta Vertex_count
674 8159 ax
675 8159 ax Acc8
677 8159 E2 20 x1 SEP #$20
678 815B x
679 81
0x01A462
830 8220 ; Y Border
831 8220
832 8220 AE 35 00 ldx Clip_Y_Min
833 8223 db_y
834 8223 AD 37 00 lda Clip_X_Min ;Y Value
835 8226 3A dec
0x01C180
ax sta Cord_pointer
951 82BA ax ;*****************************************************************************
952 82BA ax ; Rotate about Z axis
953 82BA ax ; A> Temp4=Y*Sin(A)
954 82BA ax ;
0x01C14C
960 82BD AE 16 00 ax ldx Cord_Pointer ;Setup cordinate pointer
961 82C0 ax ;-----------------------------------------------------------------------------
962 82C0 ax ; Y*Sin() -> Temp4
963 82C0
0x01CAF2
ax eor #$ffff ;Make positive if negative (ABS)
988 82E2 1A ax inc A ;2's comp offset
989 82E3 CE 1D 00 ax dec Neg_Flag ;Note its really negative
990 82E6 ax USignDivA
991 82E6 8D 04 42 ax sta WrDivL ;Dividend (Low&High)
992 82E9 ax Acc8
994 82E9 E2 20 x1 SEP #$20
995 82EB x
996 82EB A9 7F x lda #$7f ;Divisor
997 82ED 8D 06 42 x sta WrDivb
998 82F0 x Acc16
1000 82F0 C2 20 ax1 REP #$20
1001 82F2 ax
1002 82F2 EA ax nop
1003 82F3 EA ax nop
1004 82F4 ax
1005 82F4 AD 1D 00 ax lda Neg_Flag ;Determine if orginal value was neg.
1006 82F7 F0 09 ax beq PosDivA ;If not save to TEMP
1007 82F9 ax
1008 82F9 AD 14 42 ax lda RdDivL ;Get value
1009 82FC 49 FF FF ax eor #$FFFF ;Invert
1010 82FF 1A ax inc A ;2's offset
1011 8300 80 03 ax bra SkipDivA ;Save it
1012 8302 ax PosDivA
1013 8302 AD 14 42 ax lda RddivL ;Get Result (quotient)
1014 8305 ax SkipDivA
1015 8305 8D 25 00 ax sta Temp4
0x01DA5D
8335 8D 06 42 x sta WrDivb
1053 8338 x Acc16
1055 8338 C2 20 ax1 REP #$20
1056 833A ax
1057 833A EA ax nop
1058 833B EA ax nop
1059 833C ax
1060 833C AD 1D 00 ax lda Neg_Flag ;Determine if orginal value was neg.
1061 833F F0 09 ax beq PosDivB ;If not save to
0x01F1E9
ax
1156 83B9 49 FF FF ax eor #$ffff ;Make positive if negative (ABS)
1157 83BC 1A ax inc A ;2's comp offset
1158 83BD CE 1D 00 ax dec Neg_Flag ;Note its really negative
1159 83C0 ax USignDivD
1160 83C0 8D 04 42 ax sta WrDivL ;Dividend (Low&High)
1161 83C3 ax Acc8
1163 83C3 E2 20 x1 SEP #$20
1164 83C5 x
1165 83C5 A9 7F x lda #$7f ;Divisor
1166 83C7 8D 06 42 x sta WrDivb
1167 83CA x Acc16
1169 83CA C2 20 ax1 REP #$20
1170 83CC ax
1171 83CC EA ax nop
1172 83CD EA ax nop
1173 83CE ax
1174 83CE AD 1D 00 ax lda Neg_Flag ;Determine if orginal value was neg.
1175 83D1 F0 09 ax beq PosDivD ;If not save to TEMP
1176 83D3 ax
1177 83D3 AD 14 42 ax lda RdDivL ;Get value
1178 83D6 49 FF FF ax eor #$FFFF ;Invert
1179 83D9 1A ax inc A ;2's offset
1180 83DA 80 03 ax bra SkipDivD ;Save it
1181 83DC ax PosDivD
1182 83DC AD 14 42 ax lda RdDivL
1183 83DF ax SkipDivD
1184 83DF 8D 2B 00 ax sta Temp7 ; Temp3=Cos(A)*Y
1185 83E2 ax ;-----------------------------------------------------------------------------
1186 83E2 ax ; Finish Calculations
1187 83E2 ax ; X'=X*Cos(A)-Y*Sin(A) => X'=Temp7-Temp4
1188 83E2 ax ; Y'=X*Sin(A)+Y*Cos(A) => Y'=Temp6+Temp5
1189 83E2 ax ; Z'=Z
1190 83E2 ax ;-----------------------------------------------------------------------------
1191 83E2 ax Y_Value_Z
1192 83E2 AD 29 00 ax lda Temp6 ;Get X*Sin(A)
1193 83E5 8D 21 00 ax sta Temp2 ;setup for twos add
1194 83E8 AD 27 00 ax lda Temp5 ;Get Y*Cos(A)
1195 83EB 8D 23 00 ax sta Temp3 ;setup for twos add
1196 83EE 20 58 82 ax jsr Twos_add ;do it
1197 83F1 9D 00 11 ax sta Temp_Buffer_Y,x ;save values (buffer for later translation
1198 83F4 ax X_Value_Z
1199 83F4 AD 2B 00 ax lda Temp7 ;Get X*Cos(A)
1200 83F7 8D 21 00 ax sta Temp2 ;setup for twos add
1201 83FA AD 25 00 ax lda Temp4 ;Get Y*Sin(A)
1202 83FD ax
1203 83FD ax ; invert second value
1204 83FD ax
1205 83FD 49 FF FF ax eor #$ffff ;flip bits
1206 8400 1A ax inc A ;add 1
1207 8401 8D 23 00 ax sta Temp3 ;setup for twos add
1208 8404 20 58 82 ax jsr Twos_add
[snip]
R8407 9D 00 10
[snip]
Temp_Buf
[snip]
e it (16bit)
0x025BA0
HDMA0ADDH
C HDMA0ADDL
C HDMA0BANK
C HDMA0LNUM
C HDMA1ADDH
C HDMA1ADDL
C HDMA1BANK
C HDMA1LNUM
C HDMA2ADDH
&C HDMA2ADDL
%C HDMA2BANK
0x027134
00 00 x dw $0000,$0000,$0000,$0000
5388 B810 x ;1
5389 B810 00 00 00 00 x dw $0000,$0000,$0000,$0000
5390 B818 00 00 00 00 x dw $0000,$0000,$0000,$0000
5391 B820 x ;2
5392 B820 00 00 00 00 x dw $0000,$0000,$0000,$0000
5393 B828 00 00 00 00 x dw $0000,$0000,$0000,$0000
5394 B830 x ;3
5395 B830 00 00 00 00 x dw $0000,$0000,$0000,$0000
5396 B838 00 00 00 00 x dw $0000,$0000,$0000,$0000
5397 B840 x ;4
5398 B840 00 00 00 00 x dw $0000,$0000,$0000,$0000
5399 B848 00 00 00 00 x dw $0000,$0000,$0000,$0000
5400 B850 x ;5
5401 B850 00 00 00 00 x dw $0000,$0000,$0000,$ff00
5402 B858 00 00 00 00 x dw $0000,$0000,$0000,$0000
5403 B860 x ;6
5404 B860 00 00 00 00 x dw $0000,$0000,$0000,$ff00
5405 B868 00 00 00 00 x dw $0000,$0000,$0000,$0000
5406 B870 x ;7
5407 B870 00 00 00 00 x dw $0000,$0000,$0000,$ff00
5408 B878 00 00 00 00 x dw $0000,$0000,$0000,$0000
5409 B880 x ;8
5410 B880 00 00 00 00 x dw $0000,$0000,$0000,$0000
5411 B888 00 00 00 00 x dw $0000,$0000,$0000,$0000
5412 B890 x ;9
5413 B890 00 00 00 00 x dw $0000,$0000,$0000,$0000
5414 B898 00 00 00 00 x dw $0000,$0000,$0000,$0000
5415 B8A0 x ;10
5416 B8A0 00 00 00 00 x dw $0000,$0000,$0000,$0000
5417 B8A8 00 00 00 00 x dw $0000,$0000,$0000,$0000
5418 B8B0 x ;11
5419 B8B0 00 00 00 00 x dw $0000,$0000,$0000,$0000
5420 B8B8 00 00 00 00 x dw $0000,$0000,$0000,$0000
5421 B8C0 x ;12
5422 B8C0 00 00 00 00 x dw $0000,$0000,$0000,$0000
5423 B8C8 00 00 00 00 x dw $0000,$0000,$0000,$0000
5424 B8D0 x ;13
5425 B8D0 00 00 00 00 x dw $0000,$0000,$0000,$0000
5426 B8D8 00 00 00 00 x dw $0000,$0000,$0000,$0000
5427 B8E0 x ;14
5428 B8E0 00 00 00 00 x dw $0000,$0000,$0000,$0000
5429 B8E8 00 00 00 00 x dw $0000,$0000,$0000,$0000
5430 B8F0 x ;15
5431 B8F0 00 00 00 00 x dw $0000,$0000,$0000,$0000
5432 B8F8 00 00 00 00 x dw $0000,$0000,$0000,$0000
5433 B900 x ;16
5434 B900 00 00 00 00 x dw $0000,$0000,$0000,$0000
5435 B908 00 00 00 00 x dw $0000,$0000,$0000,$0000
5436 B910 x ;17
5437 B910 00 00 00 00 x dw $0000,$0000,$0000,$0000
5438 B918 00 00 00 00 x dw $0000,$0000,$0000,$0000
demo.X65 ......PAGE 0098
LINE# LOC CODE LINE
5439 B920 x ;18
5440 B920 00 00 00 00 x dw $0000,$0000,$0000,$0000
5441 B928 00 00 00 00 x dw $0000,$0000,$0000,$0000
5442 B930 x ;19
5443 B930 00 00 00 00 x dw $0000,$0000,$0000,$0000
5444 B938 00 00 00 00 x dw $0000,$0000,$0000,$0000
5445 B940 x ;20
5446 B940 00 00 00 00 x dw $0000,$0000,$0000,$0000
5447 B948 00 00 00 00 x dw $0000,$0000,$0000,$0000
5448 B950
[snip]
R50 00 00 00 0
[snip]
$0000,$000
[snip]
B958 00 0
0x032580
0000 INDEX8 macro
319 0000 OFF16I ;index reg set to 8 bit mode
320 0000 SEP #$10
321 0000 endm
322 0000
323 0000 ACC16 macro
324 0000 on
0x03386D
#trfword
398 00
0x03FFE8
36 0000
0x036730
sta M7ParaC ;Low
582 809F 8D 1D 21 x sta M7ParaC ;High
583 80A2 8D 1E 21 x sta M7ParaD ;Low
584 80A5 A9 01 x lda #01
585 80A7 8D 1E 21 x sta M7ParaD ;High
0x0371E8
itialize PPU Registers *
0x037E11
670 814F 9C 0A 00 ax stz Tran_y
671 8152 ax
672 8152 AF 00 80 81 ax
0x037FE8
sta Scale
0x038F7E
740 81BB 88 ax dey ;increment counter
741 81BC D0 F9 ax
0x03AB60
x
864 8248 x ;*****************************************************************
865 8248 x ; Draw Test image
866 8248 x ; Use bitmap
867 8248 x ;*****************************************************************
868 8248 20 A8 82 x jsr Draw_object
869 824B x ;*****************************************************************
870 824B x ; Turn up brightness
871 824B x ;*****************************************************************
872 824B x Screen_On
873 824B A9 01 x lda #01 ; bg1
874 824D 8D 2C 21 x sta TMain
875 8250 A9 0F x lda #$0f ;max value 16
876 8252 8D 00 21 x sta IniDisp ;full bright
877 8255 4C F7 89 x jmp Wait_Nmi ; end of init code
878 8258 x ;/////////////////////////////////////////////////////////////////////////////
879 8258 x ; Subroutines
880 8258
0x03B16C
and returns in Temp2
0x03B2EC
Carry bit
892 82
0x03B453
0
12
3
1
12
124
52
;test for positive
89
0x03BFC1
Index16
943 82AA C2 10 ax1 REP #$10
(Source: nensondubois)
|
The Sports Illustrated series | |
|---|---|
|
Game Boy |
Sports Illustrated Championship Football & Baseball • Sports Illustrated: Golf Classic |
|
SNES |
|