start work on audio engine

This commit is contained in:
padz 2012-10-09 02:32:05 -04:00
parent 99b86cdd8f
commit a7631774b4
3 changed files with 782 additions and 3 deletions

View File

@ -3006,3 +3006,108 @@ MOBILE_STUDIUM EQU 5
; name length
PLAYER_NAME_LENGTH EQU 8
PKMN_NAME_LENGTH EQU 11
; music
MUSIC_NONE EQU 0
MUSIC_TITLE EQU 1
MUSIC_ROUTE_1 EQU 2
MUSIC_ROUTE_3 EQU 3
MUSIC_ROUTE_12 EQU 4
MUSIC_MAGNET_TRAIN EQU 5
MUSIC_KANTO_GYM_LEADER_BATTLE EQU 6
MUSIC_KANTO_TRAINER_BATTLE EQU 7
MUSIC_KANTO_WILD_BATTLE EQU 8
MUSIC_POKEMON_CENTER EQU 9
MUSIC_HIKER_ENCOUNTER EQU 10
MUSIC_LASS_ENCOUNTER EQU 11
MUSIC_OFFICER_ENCOUNTER EQU 12
MUSIC_HEAL EQU 13
MUSIC_LAVENDER_TOWN EQU 14
MUSIC_ROUTE_2 EQU 15
MUSIC_MT_MOON EQU 16
MUSIC_SHOW_ME_AROUND EQU 17
MUSIC_GAME_CORNER EQU 18
MUSIC_BICYCLE EQU 19
MUSIC_HALL_OF_FAME EQU 20
MUSIC_VIRIDIAN_CITY EQU 21
MUSIC_CELADON_CITY EQU 22
MUSIC_TRAINER_VICTORY EQU 23
MUSIC_WILD_VICTORY EQU 24
MUSIC_GYM_VICTORY EQU 25
MUSIC_MT_MOON_SQUARE EQU 26
MUSIC_GYM EQU 27
MUSIC_PALLET_TOWN EQU 28
MUSIC_POKEMON_TALK EQU 29
MUSIC_PROF_OAK EQU 30
MUSIC_RIVAL_ENCOUNTER EQU 31
MUSIC_RIVAL_AFTER EQU 32
MUSIC_SURF EQU 33
MUSIC_EVOLUTION EQU 34
MUSIC_NATIONAL_PARK EQU 35
MUSIC_CREDITS EQU 36
MUSIC_AZALEA_TOWN EQU 37
MUSIC_CHERRYGROVE_CITY EQU 38
MUSIC_KIMONO_ENCOUNTER EQU 39
MUSIC_UNION_CAVE EQU 40
MUSIC_JOHTO_WILD_BATTLE EQU 41
MUSIC_JOHTO_TRAINER_BATTLE EQU 42
MUSIC_ROUTE_30 EQU 43
MUSIC_ECRUTEAK_CITY EQU 44
MUSIC_VIOLET_CITY EQU 45
MUSIC_JOHTO_GYM_LEADER_BATTLE EQU 46
MUSIC_CHAMPION_BATTLE EQU 47
MUSIC_RIVAL_BATTLE EQU 48
MUSIC_ROCKET_BATTLE EQU 49
MUSIC_PROF_ELM EQU 50
MUSIC_SLOWPOKE_WELL EQU 51
MUSIC_ROUTE_29 EQU 52
MUSIC_ROUTE_36 EQU 53
MUSIC_SS_AQUA EQU 54
MUSIC_YOUNGSTER_ENCOUNTER EQU 55
MUSIC_BEAUTY_ENCOUNTER EQU 56
MUSIC_ROCKET_ENCOUNTER EQU 57
MUSIC_POKEMANIAC_ENCOUNTER EQU 58
MUSIC_SAGE_ENCOUNTER EQU 59
MUSIC_NEW_BARK_TOWN EQU 60
MUSIC_GOLDENROD_CITY EQU 61
MUSIC_VERMILION_CITY EQU 62
MUSIC_POKEMON_CHANNEL EQU 63
MUSIC_POKE_FLUTE_CHANNEL EQU 64
MUSIC_TIN_TOWER EQU 65
MUSIC_SPROUT_TOWER EQU 66
MUSIC_BURNED_TOWER EQU 67
MUSIC_LIGHTHOUSE EQU 68
MUSIC_LAKE_OF_RAGE EQU 69
MUSIC_INDIGO_PLATEAU EQU 70
MUSIC_ROUTE_37 EQU 71
MUSIC_ROCKET_HIDEOUT EQU 72
MUSIC_DRAGONS_DEN EQU 73
MUSIC_JOHTO_WILD_BATTLE_NIGHT EQU 74
MUSIC_RUINS_OF_ALPH_RADIO EQU 75
MUSIC_CAPTURE EQU 76
MUSIC_ROUTE_26 EQU 77
MUSIC_MOM EQU 78
MUSIC_VICTORY_ROAD EQU 79
MUSIC_POKEMON_LULLABY EQU 80
MUSIC_POKEMON_MARCH EQU 81
MUSIC_GS_OPENING EQU 82
MUSIC_GS_OPENING_2 EQU 83
MUSIC_MAIN_MENU EQU 84
MUSIC_RUINS_OF_ALPH_INTERIOR EQU 85
MUSIC_ROCKET_OVERTURE EQU 86
MUSIC_DANCING_HALL EQU 87
MUSIC_BUG_CATCHING_CONTEST_RANKING EQU 88
MUSIC_BUG_CATCHING_CONTEST EQU 89
MUSIC_LAKE_OF_RAGE_ROCKET_RADIO EQU 90
MUSIC_PRINTER EQU 91
MUSIC_POST_CREDITS EQU 92
MUSIC_CLAIR EQU 93
MUSIC_MOBILE_ADAPTER_MENU EQU 94
MUSIC_MOBILE_ADAPTER EQU 95
MUSIC_BUENAS_PASSWORD EQU 96
MUSIC_MYSTICALMAN_ENCOUNTER EQU 97
MUSIC_CRYSTAL_OPENING EQU 98
MUSIC_BATTLE_TOWER_THEME EQU 99
MUSIC_SUICUNE_BATTLE EQU 100
MUSIC_BATTLE_TOWER_LOBBY EQU 101
MUSIC_MOBILE_CENTER EQU 102

552
main.asm
View File

@ -1285,7 +1285,74 @@ Function3927: ; 3927
jp AddNTimes
; 392d
INCBIN "baserom.gbc",$392d,$4000 - $392d
INCBIN "baserom.gbc",$392d,$3b86 - $392d
LoadMusicHeader: ; 3b86
; store music header in ram
; input:
; a: bank
; de: address
ld [$ff00+$9d], a
ld [$2000], a ; bankswitch
ld a, [de]
ld [MusicHeaderBuffer], a
ld a, $3a ; manual bank restore
ld [$ff00+$9d], a
ld [$2000], a ; bankswitch
ret
; 3b97
StartMusic: ; 3b97
; input:
; e = song number
push hl
push de
push bc
push af
ld a, [$ff00+$9d] ; save bank
push af
ld a, BANK(LoadMusic)
ld [$ff00+$9d], a
ld [$2000], a ; bankswitch
ld a, e ; song number
and a
jr z, .nomusic
call LoadMusic
jr .end
.nomusic
call SoundRestart
.end
pop af
ld [$ff00+$9d], a ; restore bank
ld [$2000], a
pop af
pop bc
pop de
pop hl
ret
; 3bbc
INCBIN "baserom.gbc",$3bbc,$3c97 - $3bbc
MaxVolume: ; 3c97
ld a, $77 ; max
ld [Volume], a
ret
; 3c9d
LowVolume: ; 3c9d
ld a, $33 ; 40%
ld [Volume], a
ret
; 3ca3
VolumeOff: ; 3ca3
xor a
ld [Volume], a
ret
; 3ca8
INCBIN "baserom.gbc",$3ca8,$4000 - $3ca8
SECTION "bank1",DATA,BANK[$1]
@ -74217,7 +74284,488 @@ INCBIN "baserom.gbc",$E4000,$4000
SECTION "bank3A",DATA,BANK[$3A]
INCBIN "baserom.gbc",$E8000,$4000
SoundRestart: ; e8000
; restart sound operation
; clear all relevant registers
push hl
push de
push bc
push af
call MusicOff
ld hl, $ff24 ; channel control registers
xor a
ld [hli], a ; ff24 ; volume/vin
ld [hli], a ; ff25 ; stereo channels
ld a, $80 ; all channels on
ld [hli], a ; ff26 ; mono channels
ld hl, $ff10 ; sound channel registers
ld e, $04 ; number of channels
.clearsound
; sound channel 1 2 3 4
xor a
ld [hli], a ; $ff10, $ff15, $ff1a, $ff1f ; sweep = 0
ld [hli], a ; $ff11, $ff16, $ff1b, $ff20 ; length/wavepattern = 0
ld a, $08
ld [hli], a ; $ff12, $ff17, $ff1c, $ff21 ; envelope = 0
xor a
ld [hli], a ; $ff13, $ff18, $ff1d, $ff22 ; frequency lo = 0
ld a, $80
ld [hli], a ; $ff14, $ff19, $ff1e, $ff23 ; restart sound (freq hi = 0)
dec e
jr nz, .clearsound
ld hl, $c101 ; start of channel data
ld de, $01bf ; length ($ * 8 channels)
.clearchannels ; clear $c101-$c2bf
xor a
ld [hli], a
dec de
ld a, e
or d
jr nz, .clearchannels
ld a, $77 ; max
ld [Volume], a
call MusicOn
pop af
pop bc
pop de
pop hl
ret
; e803d
INCBIN "baserom.gbc",$e803d,$e8051 - $e803d
MusicOn: ; e8051
ld a, $01
ld [$c100], a
ret
; e8057
MusicOff: ; e8057
xor a
ld [$c100], a
ret
; e805c
INCBIN "baserom.gbc",$e805c,$e8b11 - $e805c
StartChannel: ; e8b11
call SetLRTracks
ld hl, $0003
add hl, bc
set 0, [hl] ; channel on
ret
; e8b1b
SetLRTracks: ; e8b1b
; input:
; bc = Channels ($c101)
; seems to be redundant since this is overwritten by stereo data later
push de
ld a, [CurMusicChannel]
and a, $03 ; bit 0-1
ld e, a
ld d, $00
call GetLRTracks ; hl = mono / stereo table
add hl, de ; + channel #
ld a, [hl] ; get result
ld hl, Channel1LR - Channel1
add hl, bc
ld [hl], a ; set tracks
pop de
ret
; e8b30
LoadMusic: ; e8b30
; load music
call MusicOff
ld hl, MusicID
ld [hl], e ; song number
inc hl
ld [hl], d ; MusicIDHi (always $00)
ld hl, Music
add hl, de ; three
add hl, de ; byte
add hl, de ; pointer
ld a, [hli]
ld [MusicBank], a
ld e, [hl]
inc hl
ld d, [hl] ; music header address
call GetByteFromMusicHeader ; store first byte of music header in [a]
rlca
rlca
and a, $03 ; get number of channels
inc a
.loop
; start playing channels
push af
call LoadChannel
call StartChannel
pop af
dec a
jr nz, .loop
xor a
ld [$c2b5], a
ld [$c2b8], a
ld [$c2b9], a
ld [$c2ba], a
ld [$c2bb], a
ld [$c2a0], a
ld [$c2a1], a
ld [$c2a2], a
ld [$c2a4], a
call MusicOn
ret
; e8b79
INCBIN "baserom.gbc",$e8b79,$e8d1b - $e8b79
LoadChannel: ; e8d1b
; prep channel for use
; get pointer to current channel
call GetByteFromMusicHeader
inc de
and a, $07 ; bit 0-2 (current channel)
ld [CurMusicChannel], a
ld c, a
ld b, $00
ld hl, ChannelPointers
add hl, bc
add hl, bc
ld c, [hl]
inc hl
ld b, [hl] ; bc = channel pointer
ld hl, $0003
add hl, bc
res 0, [hl] ; channel off
call ChannelInit
; load music pointer
ld hl, Channel1MusicAddress - Channel1
add hl, bc
call GetByteFromMusicHeader
ld [hli], a
inc de
call GetByteFromMusicHeader
ld [hl], a
inc de
; load music id
ld hl, Channel1MusicID - Channel1
add hl, bc
ld a, [MusicIDLo]
ld [hli], a
ld a, [MusicIDHi]
ld [hl], a
; load music bank
ld hl, Channel1MusicBank - Channel1
add hl, bc
ld a, [MusicBank]
ld [hl], a
ret
; e8d5b
ChannelInit: ; e8d5b
; make sure channel is clean
; set default tempo and note length in case nothing is loaded
; input:
; bc = channel struct pointer
push de
xor a
ld hl, $0000
add hl, bc
ld e, $32 ; channel struct length
; clear channel struct
.loop
ld [hli], a
dec e
jr nz, .loop
ld hl, $0019 ; note length
add hl, bc
xor a
ld [hli], a
inc a
ld [hl], a ; default note length $100
ld hl, $002d ; tempo
add hl, bc
ld [hl], a ; default tempo $01 (fast)
pop de
ret
; e8d76
GetByteFromMusicHeader: ; e8d76
; input:
; de = address of current spot in music header
; output:
; a
ld a, [MusicBank]
call LoadMusicHeader
ld a, [MusicHeaderBuffer]
ret
; e8d80
INCBIN "baserom.gbc",$e8d80,$e8fc2 - $e8d80
GetLRTracks: ; e8fc2
; gets the default sound l/r channels
; stores mono/stereo table in hl
ld a, [Options]
bit 5, a ; stereo
; made redundant, could have had a purpose in gold
jr nz, .stereo
ld hl, MonoTracks
ret
.stereo
ld hl, StereoTracks
ret
; e8fd1
MonoTracks: ; e8fd1
; bit corresponds to track #
; top nybble: right channel
; bottom nybble: left channel
db $11, $22, $44, $88
; e8fd5
StereoTracks: ; e8fd5
; seems to be wrong
; figure out what this is actually for
; might be default then clears one nybble based on song id
db $11, $22, $44, $88
; e8fd9
ChannelPointers: ; e8fd9
; mono channels
dw Channel1
dw Channel2
dw Channel3
dw Channel4
; stereo channels
dw Channel5
dw Channel6
dw Channel7
dw Channel8
; e8fe9
; identical in function to SoundRestart but cleaner
INCBIN "baserom.gbc",$e8fe9,$e900a - $e8fe9
PlayTrainerEncounterMusic: ; e900a
; input: e = trainer type
; turn music off for one frame
xor a
ld [MusicLength], a ; $00 = infinite
push de
ld de, $0000
call StartMusic
call DelayFrame
; play new song
call MaxVolume
pop de
ld d, $00
ld hl, TrainerEncounterMusic
add hl, de
ld e, [hl]
call StartMusic
ret
; e9027
TrainerEncounterMusic: ; e9027
db MUSIC_HIKER_ENCOUNTER
db MUSIC_YOUNGSTER_ENCOUNTER ; falkner
db MUSIC_LASS_ENCOUNTER ; whitney
db MUSIC_YOUNGSTER_ENCOUNTER ; bugsy
db MUSIC_OFFICER_ENCOUNTER ; morty
db MUSIC_OFFICER_ENCOUNTER ; pryce
db MUSIC_LASS_ENCOUNTER ; jasmine
db MUSIC_OFFICER_ENCOUNTER ; chuck
db MUSIC_BEAUTY_ENCOUNTER ; clair
db MUSIC_RIVAL_ENCOUNTER ; rival1
db MUSIC_HIKER_ENCOUNTER ; pokemon_prof
db MUSIC_HIKER_ENCOUNTER ; will
db MUSIC_HIKER_ENCOUNTER ; cal
db MUSIC_OFFICER_ENCOUNTER ; bruno
db MUSIC_HIKER_ENCOUNTER ; karen
db MUSIC_HIKER_ENCOUNTER ; koga
db MUSIC_OFFICER_ENCOUNTER ; champion
db MUSIC_YOUNGSTER_ENCOUNTER ; brock
db MUSIC_LASS_ENCOUNTER ; misty
db MUSIC_OFFICER_ENCOUNTER ; lt_surge
db MUSIC_ROCKET_ENCOUNTER ; scientist
db MUSIC_OFFICER_ENCOUNTER ; erika
db MUSIC_YOUNGSTER_ENCOUNTER ; youngster
db MUSIC_YOUNGSTER_ENCOUNTER ; schoolboy
db MUSIC_YOUNGSTER_ENCOUNTER ; bird_keeper
db MUSIC_LASS_ENCOUNTER ; lass
db MUSIC_LASS_ENCOUNTER ; janine
db MUSIC_HIKER_ENCOUNTER ; cooltrainerm
db MUSIC_BEAUTY_ENCOUNTER ; cooltrainerf
db MUSIC_BEAUTY_ENCOUNTER ; beauty
db MUSIC_POKEMANIAC_ENCOUNTER ; pokemaniac
db MUSIC_ROCKET_ENCOUNTER ; gruntm
db MUSIC_HIKER_ENCOUNTER ; gentleman
db MUSIC_BEAUTY_ENCOUNTER ; skier
db MUSIC_BEAUTY_ENCOUNTER ; teacher
db MUSIC_BEAUTY_ENCOUNTER ; sabrina
db MUSIC_YOUNGSTER_ENCOUNTER ; bug_catcher
db MUSIC_HIKER_ENCOUNTER ; fisher
db MUSIC_HIKER_ENCOUNTER ; swimmerm
db MUSIC_BEAUTY_ENCOUNTER ; swimmerf
db MUSIC_HIKER_ENCOUNTER ; sailor
db MUSIC_POKEMANIAC_ENCOUNTER ; super_nerd
db MUSIC_RIVAL_ENCOUNTER ; rival2
db MUSIC_HIKER_ENCOUNTER ; guitarist
db MUSIC_HIKER_ENCOUNTER ; hiker
db MUSIC_HIKER_ENCOUNTER ; biker
db MUSIC_OFFICER_ENCOUNTER ; blaine
db MUSIC_POKEMANIAC_ENCOUNTER ; burglar
db MUSIC_HIKER_ENCOUNTER ; firebreather
db MUSIC_POKEMANIAC_ENCOUNTER ; juggler
db MUSIC_HIKER_ENCOUNTER ; blackbelt_t
db MUSIC_ROCKET_ENCOUNTER ; executivem
db MUSIC_YOUNGSTER_ENCOUNTER ; psychic_t
db MUSIC_LASS_ENCOUNTER ; picnicker
db MUSIC_YOUNGSTER_ENCOUNTER ; camper
db MUSIC_ROCKET_ENCOUNTER ; executivef
db MUSIC_SAGE_ENCOUNTER ; sage
db MUSIC_SAGE_ENCOUNTER ; medium
db MUSIC_HIKER_ENCOUNTER ; boarder
db MUSIC_HIKER_ENCOUNTER ; pokefanm
db MUSIC_KIMONO_ENCOUNTER ; kimono_girl
db MUSIC_LASS_ENCOUNTER ; twins
db MUSIC_BEAUTY_ENCOUNTER ; pokefanf
db MUSIC_HIKER_ENCOUNTER ; red
db MUSIC_RIVAL_ENCOUNTER ; blue
db MUSIC_HIKER_ENCOUNTER ; officer
db MUSIC_ROCKET_ENCOUNTER ; gruntf
db MUSIC_HIKER_ENCOUNTER ; mysticalman
db MUSIC_HIKER_ENCOUNTER
db MUSIC_HIKER_ENCOUNTER
db MUSIC_HIKER_ENCOUNTER
; e906e
Music: ; e906e
; bank, address
dbw BANK(NoMusic), NoMusic
dbw $3a, $7808
dbw $3b, $4000
dbw $3b, $42ca
dbw $3b, $4506
dbw $3b, $75f0
dbw $3b, $4720
dbw $3b, $49fa
dbw $3b, $506d
dbw $3b, $55c6
dbw $3d, $7411
dbw $3b, $579b
dbw $3b, $582d
dbw $3c, $4697
dbw $3b, $772f
dbw $3b, $58dd
dbw $3b, $5b29
dbw $3b, $5bd8
dbw $3b, $5d6d
dbw $3b, $6119
dbw $3c, $45bf
dbw $3d, $4000
dbw $3d, $435b
dbw $3a, $7eab
dbw $3d, $4518
dbw $3d, $462c
dbw $3d, $4815
dbw $3d, $48ae
dbw $3d, $4b0c
dbw $3d, $4c9f
dbw $3d, $4dea
dbw $3d, $4f79
dbw $3d, $5127
dbw $3d, $518a
dbw $3c, $46e1
dbw $3d, $54e8
dbw $07, $731c
dbw $3d, $57e8
dbw $3d, $5b03
dbw $3d, $79b8
dbw $3d, $5c60
dbw $3d, $5dc5
dbw $3d, $6096
dbw $3b, $7c01
dbw $3b, $72d0
dbw $3c, $4000
dbw $3a, $650d
dbw $3a, $69c1
dbw $3a, $574f
dbw $3a, $5b6f
dbw $3a, $6040
dbw $3a, $62be
dbw $3c, $4386
dbw $3a, $54e9
dbw $3a, $6d99
dbw $3d, $66c3
dbw $3b, $6e3e
dbw $3d, $74a2
dbw $3a, $7de1
dbw $3b, $635e
dbw $3a, $72d3
dbw $3a, $7453
dbw $3a, $7676
dbw $3b, $645f
dbw $3d, $7b13
dbw $3d, $6811
dbw $3d, $6974
dbw $3d, $6a99
dbw $3b, $6569
dbw $3b, $66c5
dbw $3b, $6852
dbw $3b, $694b
dbw $3b, $6b75
dbw $3b, $6ce8
dbw $3d, $605c
dbw $3b, $6dcb
dbw $3d, $4602
dbw $3b, $6fb2
dbw $3d, $6bf2
dbw $3d, $6c72
dbw $3d, $6d79
dbw $3d, $6e23
dbw $3d, $7055
dbw $3d, $7308
dbw $3d, $78fd
dbw $3a, $7d9e
dbw $3d, $766d
dbw $3b, $79bc
dbw $3b, $7b3e
dbw $3d, $7c16
dbw $3b, $75b1
dbw $3c, $47fd
dbw $33, $7d9e
dbw $07, $7a8d
dbw $5e, $401f
dbw $07, $7c87
dbw $5e, $4153
dbw $5e, $443b
dbw $5e, $46e8
dbw $5e, $4889
dbw $5e, $4b81
dbw $5e, $548b
dbw $5e, $561d
; e91a3
NoMusic: ; e91a3
; (nothing)
dbw $c0, NoMusic_Ch0
dbw $01, NoMusic_Ch1
dbw $02, NoMusic_Ch2
dbw $03, NoMusic_Ch3
NoMusic_Ch0:
NoMusic_Ch1:
NoMusic_Ch2:
NoMusic_Ch3: ; e91af
db $ff ; end
; e91b0
INCBIN "baserom.gbc",$e91b0,$ec000-$e91b0
SECTION "bank3B",DATA,BANK[$3B]

126
wram.asm
View File

@ -1,3 +1,87 @@
SECTION "audio",BSS[$c100]
; channel structure:
; $00: music id lo
; $01: music id hi
;
; $03: channel flags? bit 0 = on/off
;
; $06: address of music data
;
; $19: note length lo
; $1a: note length hi
; $1b: lr tracks (bit corresponds to track #)
;
; $2d: tempo
Channels:
Channel1:
Channel1MusicID: ; c101
ds 2
Channel1MusicBank: ; c103
ds 1
; $03 = channel flags?
ds 1
; note/octave????
ds 2
Channel1MusicAddress: ; c107
ds 2
ds 17
Channel1NoteLength: ; c11a
ds 2
Channel1LR: ; c11c
ds 1
ds 16
Channel1Tempo: ; c12e
ds 1
ds 3
Channel2: ; c133
ds 50
Channel3: ; c165
ds 50
Channel4: ; c197
ds 50
StereoChannels:
Channel5: ; c1c9
ds 50
Channel6: ; c1fb
ds 50
Channel7: ; c22d
ds 50
Channel8: ; c25f
ds 50
MusicHeaderBuffer: ; c298
ds 1
CurMusicChannel: ; c299
ds 1
Volume: ; c29a
; corresponds to $ff24
; Channel control / ON-OFF / Volume (R/W)
; bit 7 - Vin->SO2 ON/OFF
; bit 6-4 - SO2 output level (volume) (# 0-7)
; bit 3 - Vin->SO1 ON/OFF
; bit 2-0 - SO1 output level (volume) (# 0-7)
ds 1
MusicID:
MusicIDLo: ; c29d
ds 1
MusicIDHi: ; c29e
ds 1
MusicBank: ; c29f
ds 1
MusicLength: ; c2a7
; fades out when counter hits this value
; $00 = infinite
ds 1
SECTION "linkbattle",BSS[$c2dc]
InLinkBattle: ; 0xc2dc
@ -63,6 +147,48 @@ BattleMonSpclAtk: ; c646
BattleMonSpclDef: ; c648
ds 2
SECTION "Engine",BSS[$cfcc]
Options: ; cfcc
; bit 0-2: number of frames to delay when printing text
; fast 1; mid 3; slow 5
; bit 3-4: unused
; bit 5: stereo off/on
; bit 6: battle style shift/set
; bit 7: battle scene off/on
ds 1
TextBoxFrame: ; cfce
; bits 0-2: textbox frame 0-7
ds 1
GBPrinter: ; cfd0
; bit 0-6: brightness
; lightest: $00
; lighter: $20
; normal: $40 (default)
; darker: $60
; darkest: $7F
ds 1
Options2: ; cfd1
; bit 1: menu account off/on
ds 1
VramState: ; d0ed
; bit 0: overworld sprite updating on/off
; bit 6: something to do with text
; bit 7: on when surf initiates
; flickers when climbing waterfall
ds 1
CurPartyMon: ; d109
; contains which monster in your party
; is being dealt with at the moment
; 0-5
ds 1
SECTION "EnemyMon",BSS[$d204]
EnemyMonSpecies: ; d204