Move more main.asm code into individual files

This commit is contained in:
Remy Oukaour
2017-12-15 21:22:26 -05:00
parent 01bd8ac94c
commit e44640b008
35 changed files with 1159 additions and 1153 deletions

58
event/buena_menu.asm Normal file
View File

@@ -0,0 +1,58 @@
AskRememberPassword: ; 4ae12
call .DoMenu
ld a, $0
jr c, .okay
ld a, $1
.okay
ld [ScriptVar], a
ret
.DoMenu: ; 4ae1f
lb bc, 14, 7
push bc
ld hl, YesNoMenuDataHeader
call CopyMenuDataHeader
pop bc
ld a, b
ld [wMenuBorderLeftCoord], a
add $5
ld [wMenuBorderRightCoord], a
ld a, c
ld [wMenuBorderTopCoord], a
add $4
ld [wMenuBorderBottomCoord], a
call PushWindow
call VerticalMenu
push af
ld c, 15
call DelayFrames
call Buena_ExitMenu
pop af
jr c, .refused
ld a, [wMenuCursorY]
cp $2
jr z, .refused
and a
ret
.refused
ld a, $2
ld [wMenuCursorY], a
scf
ret
Buena_ExitMenu: ; 4ae5e
ld a, [hOAMUpdate]
push af
call ExitMenu
call UpdateSprites
xor a
ld [hOAMUpdate], a
call DelayFrame
ld a, $1
ld [hOAMUpdate], a
call ApplyTilemap
pop af
ld [hOAMUpdate], a
ret

View File

@@ -0,0 +1,38 @@
BugContest_SetCaughtContestMon: ; e6ce
ld a, [wContestMon]
and a
jr z, .firstcatch
ld [wd265], a
callba DisplayAlreadyCaughtText
callba DisplayCaughtContestMonStats
lb bc, 14, 7
call PlaceYesNoBox
ret c
.firstcatch
call .generatestats
ld a, [TempEnemyMonSpecies]
ld [wd265], a
call GetPokemonName
ld hl, .caughttext
call PrintText
ret
.generatestats ; e6fd
ld a, [TempEnemyMonSpecies]
ld [CurSpecies], a
ld [CurPartySpecies], a
call GetBaseData
xor a
ld bc, PARTYMON_STRUCT_LENGTH
ld hl, wContestMon
call ByteFill
xor a
ld [MonType], a
ld hl, wContestMon
jp GeneratePartyMonStats
.caughttext ; 0xe71d
; Caught @ !
text_jump UnknownText_0x1c10c0
db "@"

265
event/heal_machine_anim.asm Executable file
View File

@@ -0,0 +1,265 @@
HealMachineAnim: ; 12324
; If you have no Pokemon, don't change the buffer. This can lead to some glitchy effects if you have no Pokemon.
ld a, [PartyCount]
and a
ret z
; The location of the healing machine relative to the player is stored in ScriptVar.
; 0: Up and left (Pokemon Center)
; 1: Left (Elm's Lab)
; 2: Up (Hall of Fame)
ld a, [ScriptVar]
ld [Buffer1], a
ld a, [rOBP1]
ld [Buffer2], a
call .DoJumptableFunctions
ld a, [Buffer2]
call DmgToCgbObjPal1
ret
; 1233e
.DoJumptableFunctions: ; 1233e
xor a
ld [Buffer3], a
.jumpable_loop
ld a, [Buffer1]
ld e, a
ld d, 0
ld hl, .Pointers
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [Buffer3]
ld e, a
inc a
ld [Buffer3], a
add hl, de
ld a, [hl]
cp 5
jr z, .finish
ld hl, .Jumptable
rst JumpTable
jr .jumpable_loop
.finish
ret
; 12365
.Pointers: ; 12365
dw .Pokecenter
dw .ElmLab
dw .HallOfFame
; 1236b
.Pokecenter: ; 1236b
db 0, 1, 3, 5
.ElmLab: ; 1236f
db 0, 1, 3, 5
.HallOfFame: ; 12373
db 0, 2, 4, 5
; 12377
.Jumptable: ; 12377
dw .LoadGFX
dw .PC_LoadBallsOntoMachine
dw .HOF_LoadBallsOntoMachine
dw .PlayHealMusic
dw .HOF_PlaySFX
dw .dummy_5 ; never encountered
; 12383
.LoadGFX: ; 12383
call .LoadPalettes
ld de, .HealMachineGFX
ld hl, VTiles0 tile $7c
lb bc, BANK(.HealMachineGFX), $2
call Request2bpp
ret
; 12393
.PC_LoadBallsOntoMachine: ; 12393
ld hl, Sprites + $80
ld de, .PC_ElmsLab_OAM
call .PlaceHealingMachineTile
call .PlaceHealingMachineTile
jr .LoadBallsOntoMachine
.HOF_LoadBallsOntoMachine: ; 123a1
ld hl, Sprites + $80
ld de, .HOF_OAM
.LoadBallsOntoMachine: ; 123a7
ld a, [PartyCount]
ld b, a
.party_loop
call .PlaceHealingMachineTile
push de
ld de, SFX_SECOND_PART_OF_ITEMFINDER
call PlaySFX
pop de
ld c, 30
call DelayFrames
dec b
jr nz, .party_loop
ret
; 123bf
.PlayHealMusic: ; 123bf
ld de, MUSIC_HEAL
call PlayMusic
jp .FlashPalettes8Times
; 123c8
.HOF_PlaySFX: ; 123c8
ld de, SFX_GAME_FREAK_LOGO_GS
call PlaySFX
call .FlashPalettes8Times
call WaitSFX
ld de, SFX_BOOT_PC
call PlaySFX
ret
; 123db
.dummy_5 ; 123db
ret
; 123dc
.PC_ElmsLab_OAM: ; 123dc
dsprite 4, 0, 4, 2, $7c, $16
dsprite 4, 0, 4, 6, $7c, $16
dsprite 4, 6, 4, 0, $7d, $16
dsprite 4, 6, 5, 0, $7d, $36 ; xflip
dsprite 5, 3, 4, 0, $7d, $16
dsprite 5, 3, 5, 0, $7d, $36 ; xflip
dsprite 6, 0, 4, 0, $7d, $16
dsprite 6, 0, 5, 0, $7d, $36 ; xflip
; 123fc
.HealMachineGFX: ; 123fc
INCBIN "gfx/overworld/heal_machine.2bpp"
; 1241c
.HOF_OAM: ; 1241c
dsprite 7, 4, 10, 1, $7d, $16
dsprite 7, 4, 10, 6, $7d, $16
dsprite 7, 3, 9, 5, $7d, $16
dsprite 7, 3, 11, 2, $7d, $16
dsprite 7, 1, 9, 1, $7d, $16
dsprite 7, 1, 11, 5, $7d, $16
; 12434
.LoadPalettes: ; 12434
call IsCGB
jr nz, .cgb
ld a, %11100000
ld [rOBP1], a
ret
.cgb
ld hl, .palettes
ld de, OBPals + 8 * 6
ld bc, 8
ld a, $5
call FarCopyWRAM
ld a, $1
ld [hCGBPalUpdate], a
ret
; 12451
.palettes ; 12451
RGB 31, 31, 31
RGB 31, 19, 10
RGB 31, 07, 01
RGB 00, 00, 00
; 12459
.FlashPalettes8Times: ; 12459
ld c, $8
.palette_loop
push bc
call .FlashPalettes
ld c, 10
call DelayFrames
pop bc
dec c
jr nz, .palette_loop
ret
; 12469
.FlashPalettes: ; 12469
call IsCGB
jr nz, .go
ld a, [rOBP1]
xor %00101000
ld [rOBP1], a
ret
.go
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld hl, OBPals + 8 * 6
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
push de
ld c, $3
.palette_loop_2
ld a, [hli]
ld e, a
ld a, [hld]
ld d, a
dec hl
ld a, d
ld [hld], a
ld a, e
ld [hli], a
inc hl
inc hl
inc hl
dec c
jr nz, .palette_loop_2
pop de
dec hl
ld a, d
ld [hld], a
ld a, e
ld [hl], a
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ret
; 124a3
.PlaceHealingMachineTile: ; 124a3
push bc
ld a, [Buffer1]
bcpixel 2, 4
cp $1 ; ElmsLab
jr z, .okay
bcpixel 0, 0
.okay
ld a, [de]
add c
inc de
ld [hli], a
ld a, [de]
add b
inc de
ld [hli], a
ld a, [de]
inc de
ld [hli], a
ld a, [de]
inc de
ld [hli], a
pop bc
ret
; 124c1

48
event/poisonstep_pals.asm Normal file
View File

@@ -0,0 +1,48 @@
LoadPoisonBGPals: ; cbcdd
call .LoadPals
ld a, [hCGB]
and a
ret nz
ret ; ????
.LoadPals: ; cbce5
ld a, [hCGB]
and a
jr nz, .cgb
ld a, [TimeOfDayPal]
and $3
cp $3
ld a, %00000000
jr z, .convert_pals
ld a, %10101010
.convert_pals
call DmgToCgbBGPals
ld c, 4
call DelayFrames
callba _UpdateTimePals
ret
.cgb
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld hl, BGPals
ld c, $20
.loop
; RGB 28, 21, 31
ld a, (palred 28 + palgreen 21 + palblue 31) % $100
ld [hli], a
ld a, (palred 28 + palgreen 21 + palblue 31) / $100
ld [hli], a
dec c
jr nz, .loop
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ld c, 4
call DelayFrames
callba _UpdateTimePals
ret

61
event/print_photo.asm Executable file
View File

@@ -0,0 +1,61 @@
PhotoStudio: ; 16dc7
ld hl, .Text_AskWhichMon
call PrintText
callba SelectMonFromParty
jr c, .cancel
ld a, [CurPartySpecies]
cp EGG
jr z, .egg
ld hl, .Text_HoldStill
call PrintText
call DisableSpriteUpdates
callba PrintPartymon
call ReturnToMapWithSpeechTextbox
ld a, [hPrinter]
and a
jr nz, .cancel
ld hl, .Text_Presto
jr .print_text
.cancel
ld hl, .Text_NoPicture
jr .print_text
.egg
ld hl, .Text_Egg
.print_text
call PrintText
ret
; 16e04
.Text_AskWhichMon: ; 0x16e04
; Which #MON should I photo- graph?
text_jump UnknownText_0x1be024
db "@"
; 0x16e09
.Text_HoldStill: ; 0x16e09
; All righty. Hold still for a bit.
text_jump UnknownText_0x1be047
db "@"
; 0x16e0e
.Text_Presto: ; 0x16e0e
; Presto! All done. Come again, OK?
text_jump UnknownText_0x1be06a
db "@"
; 0x16e13
.Text_NoPicture: ; 0x16e13
; Oh, no picture? Come again, OK?
text_jump UnknownText_0x1c0000
db "@"
; 0x16e18
.Text_Egg: ; 0x16e18
; An EGG? My talent is worth more…
text_jump UnknownText_0x1c0021
db "@"
; 0x16e1d

62
event/photo.asm → event/print_unown.asm Executable file → Normal file
View File

@@ -231,65 +231,3 @@ PlaceUnownPrinterFrontpic: ; 16dac
predef PlaceGraphic
ret
; 16dc7
PhotoStudio: ; 16dc7
ld hl, .Text_AskWhichMon
call PrintText
callba SelectMonFromParty
jr c, .cancel
ld a, [CurPartySpecies]
cp EGG
jr z, .egg
ld hl, .Text_HoldStill
call PrintText
call DisableSpriteUpdates
callba PrintPartymon
call ReturnToMapWithSpeechTextbox
ld a, [hPrinter]
and a
jr nz, .cancel
ld hl, .Text_Presto
jr .print_text
.cancel
ld hl, .Text_NoPicture
jr .print_text
.egg
ld hl, .Text_Egg
.print_text
call PrintText
ret
; 16e04
.Text_AskWhichMon: ; 0x16e04
; Which #MON should I photo- graph?
text_jump UnknownText_0x1be024
db "@"
; 0x16e09
.Text_HoldStill: ; 0x16e09
; All righty. Hold still for a bit.
text_jump UnknownText_0x1be047
db "@"
; 0x16e0e
.Text_Presto: ; 0x16e0e
; Presto! All done. Come again, OK?
text_jump UnknownText_0x1be06a
db "@"
; 0x16e13
.Text_NoPicture: ; 0x16e13
; Oh, no picture? Come again, OK?
text_jump UnknownText_0x1c0000
db "@"
; 0x16e18
.Text_Egg: ; 0x16e18
; An EGG? My talent is worth more…
text_jump UnknownText_0x1c0021
db "@"
; 0x16e1d

111
event/print_unown_2.asm Normal file
View File

@@ -0,0 +1,111 @@
RotateUnownFrontpic: ; e0000
; something to do with Unown printer
push de
xor a
call GetSRAMBank
ld hl, sScratch
ld bc, 0
.loop
push bc
push hl
push bc
ld de, wd002
call .Copy
call .Rotate
ld hl, UnownPrinter_OverworldMapRectangle
pop bc
add hl, bc
add hl, bc
ld a, [hli]
ld e, a
ld d, [hl]
ld hl, wd012
call .Copy
pop hl
ld bc, $10
add hl, bc
pop bc
inc c
ld a, c
cp 7 * 7
jr c, .loop
ld hl, OverworldMap
ld de, sScratch
ld bc, 7 * 7 tiles
call CopyBytes
pop hl
ld de, sScratch
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
call Get2bpp
call CloseSRAM
ret
.Copy: ; e004e
ld c, $10
.loop_copy
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .loop_copy
ret
.Rotate: ; e0057
ld hl, wd012
ld e, %10000000
ld d, 8
.loop_decompress
push hl
ld hl, wd002
call .CountSetBit
pop hl
ld a, b
ld [hli], a
push hl
ld hl, wd003
call .CountSetBit
pop hl
ld a, b
ld [hli], a
srl e
dec d
jr nz, .loop_decompress
ret
.CountSetBit: ; e0078
ld b, 0
ld c, 8
.loop_count
ld a, [hli]
and e
jr z, .clear
scf
jr .apply
.clear
and a
.apply
rr b
inc hl
dec c
jr nz, .loop_count
ret
overworldmaprect: MACRO
y = 0
rept \1
x = \1 * (\2 +- 1) + y
rept \2
dw OverworldMap tile x
x = x +- \2
endr
y = y + 1
endr
endm
UnownPrinter_OverworldMapRectangle: ; e008b
overworldmaprect 7, 7