start sfx disasm

This commit is contained in:
padz 2012-10-11 20:35:22 -04:00
parent 811ea2071d
commit 5635c2027a
3 changed files with 382 additions and 10 deletions

View File

@ -3063,7 +3063,7 @@ 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_DARK_CAVE EQU 51
MUSIC_ROUTE_29 EQU 52
MUSIC_ROUTE_36 EQU 53
MUSIC_SS_AQUA EQU 54

382
main.asm
View File

@ -1332,7 +1332,41 @@ StartMusic: ; 3b97
ret
; 3bbc
INCBIN "baserom.gbc",$3bbc,$3c97 - $3bbc
INCBIN "baserom.gbc",$3bbc,$3c23 - $3bbc
StartSFX: ; 3c23
; not sure why this was written differently from StartMusic
; input: de = sfx id
push hl
push de
push bc
push af
call CheckSFX ; is something already playing?
jr nc, .asm_3c32
ld a, [CurSFX] ; i guess sfx order is by priority
cp e
jr c, .quit
.asm_3c32
ld a, [$ff00+$9d] ; save bank
push af
ld a, $3a ; music bank
ld [$ff00+$9d], a
ld [$2000], a ; bankswitch
ld a, e
ld [CurSFX], a
call LoadSFX
pop af
ld [$ff00+$9d], a ; restore bank
ld [$2000], a ; bankswitch
.quit
pop af
pop bc
pop de
pop hl
ret
; 3c4e
INCBIN "baserom.gbc",$3c4e,$3c97-$3c4e
MaxVolume: ; 3c97
ld a, $77 ; max
@ -1352,7 +1386,30 @@ VolumeOff: ; 3ca3
ret
; 3ca8
INCBIN "baserom.gbc",$3ca8,$4000 - $3ca8
INCBIN "baserom.gbc",$3ca8,$3dde - $3ca8
CheckSFX: ; 3dde
; returns carry if sfx channels are active
ld a, [$c1cc] ; 1
bit 0, a
jr nz, .quit
ld a, [$c1fe] ; 2
bit 0, a
jr nz, .quit
ld a, [$c230] ; 3
bit 0, a
jr nz, .quit
ld a, [$c262] ; 4
bit 0, a
jr nz, .quit
and a
ret
.quit
scf
ret
; 3dfe
INCBIN "baserom.gbc",$3dfe,$4000 - $3dfe
SECTION "bank1",DATA,BANK[$1]
@ -74295,9 +74352,9 @@ SoundRestart: ; e8000
ld hl, $ff24 ; channel control registers
xor a
ld [hli], a ; ff24 ; volume/vin
ld [hli], a ; ff25 ; stereo channels
ld [hli], a ; ff25 ; sfx channels
ld a, $80 ; all channels on
ld [hli], a ; ff26 ; mono channels
ld [hli], a ; ff26 ; music channels
ld hl, $ff10 ; sound channel registers
ld e, $04 ; number of channels
@ -74421,7 +74478,104 @@ LoadMusic: ; e8b30
ret
; e8b79
INCBIN "baserom.gbc",$e8b79,$e8d1b - $e8b79
INCBIN "baserom.gbc",$e8b79,$e8c04 - $e8b79
LoadSFX: ; e8c04
; clear channels if they aren't already
call MusicOff
ld hl, $c1cc ; ch5 on
bit 0, [hl]
jr z, .ch6
res 0, [hl]
xor a
ld [$ff00+$11], a ; length/wavepattern = 0
ld a, $08
ld [$ff00+$12], a ; envelope = 0
xor a
ld [$ff00+$13], a ; frequency lo = 0
ld a, $80
ld [$ff00+$14], a ; restart sound (freq hi = 0)
xor a
ld [$c29c], a ; ????
.ch6
ld hl, $c1fe ; ch6 on
bit 0, [hl]
jr z, .ch7
res 0, [hl]
xor a
ld [$ff00+$16], a ; length/wavepattern = 0
ld a, $08
ld [$ff00+$17], a ; envelope = 0
xor a
ld [$ff00+$18], a ; frequency lo = 0
ld a, $80
ld [$ff00+$19], a ; restart sound (freq hi = 0)
.ch7
ld hl, $c230 ; ch7 on
bit 0, [hl]
jr z, .ch8
res 0, [hl]
xor a
ld [$ff00+$1b], a ; length/wavepattern = 0
ld a, $08
ld [$ff00+$1c], a ; envelope = 0
xor a
ld [$ff00+$1d], a ; frequency lo = 0
ld a, $80
ld [$ff00+$1e], a ; restart sound (freq hi = 0)
.ch8
ld hl, $c262 ; ch8 on
bit 0, [hl]
jr z, .chscleared
res 0, [hl]
xor a
ld [$ff00+$20], a ; length/wavepattern = 0
ld a, $08
ld [$ff00+$21], a ; envelope = 0
xor a
ld [$ff00+$22], a ; frequency lo = 0
ld a, $80
ld [$ff00+$23], a ; restart sound (freq hi = 0)
xor a
ld [$c2a0], a
ld [$c2a1], a
.chscleared
; start reading sfx header for # chs
ld hl, MusicID
ld [hl], e
inc hl
ld [hl], d
ld hl, SFX
add hl, de ; three
add hl, de ; byte
add hl, de ; pointers
ld a, [hli]
ld [MusicBank], a ; get bank
ld e, [hl] ; get address
inc hl
ld d, [hl]
call GetByteFromMusicHeader ; get # channels
rlca
rlca
and a, $03 ; bit 0-1
inc a ; # channels -> # loops
.startchannels
push af
call LoadChannel ; bc = current channel
ld hl, $0003
add hl, bc
set 3, [hl] ; not sure what bit 3 does
call StartChannel
pop af
dec a
jr nz, .startchannels
call MusicOn
xor a
ld [$c2b6], a
ret
; e8ca6
INCBIN "baserom.gbc",$e8ca6,$e8d1b - $e8ca6
LoadChannel: ; e8d1b
; prep channel for use
@ -74536,12 +74690,12 @@ StereoTracks: ; e8fd5
; e8fd9
ChannelPointers: ; e8fd9
; mono channels
; music channels
dw Channel1
dw Channel2
dw Channel3
dw Channel4
; stereo channels
; sfx channels
dw Channel5
dw Channel6
dw Channel7
@ -74765,7 +74919,219 @@ NoMusic_Ch3: ; e91af
db $ff ; end
; e91b0
INCBIN "baserom.gbc",$e91b0,$ec000-$e91b0
INCBIN "baserom.gbc",$e91b0,$e927c-$e91b0
SFX: ; e927c
dbw $3c, $4b3f ; dex fanfare 50-79
dbw $3c, $4c2f ; item
dbw $3c, $4c89 ; caught mon
dbw $3c, $4941 ; pokeballs placed on table
dbw $3c, $4947 ; potion
dbw $3c, $494a ; full heal
dbw $3c, $494d ; menu
dbw $3c, $4950 ; read text
dbw $3c, $4950 ; read text
dbw $3c, $4bd5 ; dex fanfare 20-49
dbw $3c, $4cea ; dex fanfare 80-109
dbw $3c, $4953 ; poison
dbw $3c, $4956 ; got safari balls
dbw $3c, $4959 ; boot pc
dbw $3c, $495c ; shut down pc
dbw $3c, $495f ; choose pc option
dbw $3c, $4962 ; bide / escape rope
dbw $3c, $4965 ; push button
dbw $3c, $4968 ; second part of itemfinder
dbw $3c, $496b ; warp to
dbw $3c, $496e ; warp from
dbw $3c, $4971 ; change dex mode
dbw $3c, $4974 ; jump over ledge
dbw $3c, $4977 ; grass rustle
dbw $3c, $497a ; fly
dbw $3c, $497d ; wrong
dbw $3c, $4983 ; squeak
dbw $3c, $4986 ; strength
dbw $3c, $4989 ; boat
dbw $3c, $498f ; wall open
dbw $3c, $4992 ; place puzzle piece down
dbw $3c, $4995 ; enter door
dbw $3c, $4998 ; switch pokemon
dbw $3c, $499e ; score tally? ; sounds like something out of game corner
dbw $3c, $49a4 ; buy/sell
dbw $3c, $49ad ; exit building
dbw $3c, $49aa ; bump
dbw $3c, $49b0 ; save
dbw $3c, $49f8 ; pokeflute
dbw $3c, $49fb ; elevator end
dbw $3c, $49fe ; throw ball
dbw $3c, $4a04 ; smokescreen
dbw $3c, $4a0a ; ; something skidding on water?
dbw $3c, $4a10 ; run
dbw $3c, $4a13 ; slot machine start
dbw $3c, $4dbe ; fanfare
dbw $3c, $4a3d ; peck
dbw $3c, $4a40 ; kinesis
dbw $3c, $4a43 ; lick
dbw $3c, $4a46 ; pound
dbw $3c, $4a49 ; move puzzle piece
dbw $3c, $4a4c ; comet punch
dbw $3c, $4a4f ; mega punch
dbw $3c, $4a52 ; scratch
dbw $3c, $4a55 ; vicegrip
dbw $3c, $4a58 ; razor wind
dbw $3c, $4a5b ; cut
dbw $3c, $4a5e ; wing attack
dbw $3c, $4a61 ; whirlwind
dbw $3c, $4a64 ; bind
dbw $3c, $4a67 ; vine whip
dbw $3c, $4a6a ; double kick
dbw $3c, $4a6d ; mega kick
dbw $3c, $4a70 ; headbutt
dbw $3c, $4a73 ; horn attack
dbw $3c, $4a76 ; tackle
dbw $3c, $4a79 ; poison sting
dbw $3c, $4a7c ; poisonpowder
dbw $3c, $4a7f ; doubleslap
dbw $3c, $4a82 ; bite
dbw $3c, $4a88 ; jump kick
dbw $3c, $4a8b ; stomp
dbw $3c, $4a8e ; tail whip
dbw $3c, $4a91 ; karate chop
dbw $3c, $4a94 ; submission
dbw $3c, $4a97 ; water gun
dbw $3c, $4a9d ; swords dance
dbw $3c, $4aa0 ; thunder
dbw $3c, $4aa3 ; supersonic
dbw $3c, $4aac ; leer
dbw $3c, $4ab5 ; ember
dbw $3c, $4abb ; bubblebeam
dbw $3c, $4ac4 ; hydro pump
dbw $3c, $4aca ; surf
dbw $3c, $4ad3 ; psybeam
dbw $3c, $4adc ; leech seed
dbw $3c, $4ae5 ; thundershock
dbw $3c, $4aee ; psychic
dbw $3c, $4af7 ; screech
dbw $3c, $4afd ; bone club
dbw $3c, $4b03 ; sharpen
dbw $3c, $4b09 ; egg bomb
dbw $3c, $4b12 ; sing
dbw $3c, $4b18 ; sky attack
dbw $3c, $4b21 ; hyper beam
dbw $3c, $4b24 ; shine
dbw $3c, $4a1c ;
dbw $3c, $4a1f ; $60
dbw $3c, $4a22 ; tap
dbw $3c, $4a25 ; tap
dbw $3c, $4a28 ; burn ; that is not a burn
dbw $3c, $4a2b ;
dbw $3c, $4a2e ; similar to $60
dbw $3c, $4a31 ; get coin from slots
dbw $3c, $4a34 ; pay day
dbw $3c, $4a3a ; metronome
dbw $3c, $4a19 ; call
dbw $3c, $4b2d ; hang up
dbw $3c, $4b30 ; no signal
dbw $3c, $4b2a ; sandstorm
dbw $3c, $4b33 ; elevator
dbw $3c, $52b4 ; protect
dbw $3c, $52f6 ; sketch
dbw $3c, $5314 ; rain dance
dbw $3c, $5334 ; aeroblast
dbw $3c, $5352 ; spark
dbw $3c, $5360 ; curse
dbw $3c, $537d ; rage
dbw $3c, $539c ; thief
dbw $3c, $53b0 ; thief
dbw $3c, $53ca ; spider web
dbw $3c, $53f7 ; mind reader
dbw $3c, $541d ; nighmare
dbw $3c, $5453 ; snore
dbw $3c, $5469 ; sweet kiss
dbw $3c, $547f ; sweet kiss
dbw $3c, $54a5 ; belly drum
dbw $3c, $54ba ;
dbw $3c, $54d0 ; sludge bomb
dbw $3c, $54f5 ; foresight
dbw $3c, $5515 ; spite
dbw $3c, $553a ; outrage
dbw $3c, $554d ; perish song
dbw $3c, $5570 ; giga drain
dbw $3c, $55b4 ; attract
dbw $3c, $55cc ; kinesis
dbw $3c, $55de ; zap cannon
dbw $3c, $55ef ; mean look
dbw $3c, $5621 ; heal bell
dbw $3c, $5637 ; return
dbw $3c, $5653 ; exp bar
dbw $3c, $567f ; milk drink
dbw $3c, $569f ; present
dbw $3c, $56b9 ; morning sun
dbw $3c, $4b3f ; level up
dbw $3c, $4b86 ; key item
dbw $3c, $4d56 ; fanfare
dbw $3c, $4dc7 ; register phone #
dbw $3c, $4e26 ; 3rd place
dbw $3c, $4e66 ; get egg from daycare man
dbw $3c, $4e66 ; get egg from daycare lady
dbw $3c, $4edc ; move deleted
dbw $3c, $4f5e ; 2nd place
dbw $3c, $4fe2 ; 1st place
dbw $3c, $5069 ; choose a card
dbw $3c, $5104 ; get tm
dbw $3c, $517d ; get badge
dbw $3c, $5236 ; quit slots
dbw $3c, $5775 ; nothing
dbw $3c, $5878 ; dex fanfare <20
dbw $3c, $58d2 ; dex fanfare 140-169
dbw $3c, $5951 ; dex fanfare 170-199
dbw $3c, $59d6 ; dex fanfare 200-229
dbw $3c, $5a66 ; dex fanfare >=230
dbw $3c, $5784 ; evolved
dbw $3c, $579b ; master ball
dbw $3c, $57c0 ; egg crack
dbw $3c, $57d9 ; charizard fireball (gs intro)
dbw $3c, $57ff ; pokemon appears (gs intro)
dbw $3c, $5818 ; flash
dbw $3c, $5846 ; game freak logo
dbw $3c, $5b33 ; not very effective
dbw $3c, $5b40 ; damage
dbw $3c, $5b50 ; super effective
dbw $3c, $5b63 ; ball bounce
dbw $3c, $56df ; moonlight
dbw $3c, $56fd ; encore
dbw $3c, $5721 ; beat up
dbw $3c, $574c ; batom pass
dbw $3c, $4944 ; ball wiggle
dbw $3c, $5734 ; sweet scent
dbw $3c, $5bb3 ; sweet scent
dbw $3c, $5bec ; hit end of exp bar
dbw $3c, $5c10 ; give trademon
dbw $3c, $5c3e ; get trademon
dbw $3c, $5c6c ; train arrived
dbw $3c, $675b ; stop slot
dbw $3c, $5cb4 ; 2 boops
dbw $3c, $6769 ; glass ting
dbw $3c, $6773 ; 2 glass ting
dbw $5e, $582d ; intro unown 1
dbw $5e, $583e ; intro unown 2
dbw $5e, $584f ; intro unown 3
dbw $5e, $586e ; boop
dbw $5e, $5888 ; game freak ditto transform
dbw $5e, $58a0 ; intro suicune 1
dbw $5e, $58aa ; intro pichu
dbw $5e, $58c0 ; intro suicune 2
dbw $5e, $58f4 ; intro suicune 3
dbw $5e, $5907 ; game freak ditto bounce
dbw $5e, $591d ; intro suicune 4
dbw $5e, $5942 ; game freak presents
dbw $5e, $5961 ; tingle
dbw $3c, $5cd0 ; sand?
dbw $5e, $597c ; two pc beeps
dbw $5e, $5992 ; 4 note ditty
dbw $5e, $59cb ; twinkle
; e94e9
INCBIN "baserom.gbc",$e94e9,$ebfc3 - $e94e9
SECTION "bank3B",DATA,BANK[$3B]

View File

@ -42,7 +42,7 @@ Channel3: ; c165
Channel4: ; c197
ds 50
StereoChannels:
SFXChannels:
Channel5: ; c1c9
ds 50
Channel6: ; c1fb
@ -85,6 +85,12 @@ MusicLength: ; c2a7
; fades out when counter hits this value
; $00 = infinite
ds 1
ds 24
CurSFX: ; c2bf
; id of sfx currently playing
ds 1
SECTION "linkbattle",BSS[$c2dc]