Split up some more banks in main.asm

This commit is contained in:
PikalaxALT 2015-11-16 21:46:36 -05:00
parent ba871547ed
commit 042fc4bfe5
10 changed files with 3311 additions and 3309 deletions

209
engine/money.asm Executable file
View File

@ -0,0 +1,209 @@
GiveMoney:: ; 15fd7
ld a, $3
call AddMoney
ld bc, MaxMoney
ld a, $3
call CompareMoney
jr z, .asm_15ff5
jr c, .asm_15ff5
ld hl, MaxMoney
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
scf
ret
.asm_15ff5
and a
ret
; 15ff7
MaxMoney: ; 15ff7
dt 999999
; 15ffa
TakeMoney:: ; 15ffa
ld a, 3
call SubtractMoney
jr nc, .asm_16009
xor a
ld [de], a
inc de
ld [de], a
inc de
ld [de], a
scf
ret
.asm_16009
and a
ret
; 1600b
CompareMoney:: ; 1600b
ld a, $3
CompareFunds: ; 1600d
push hl
push de
push bc
ld h, b
ld l, c
ld c, $0
ld b, a
.loop1
dec a
jr z, .done
inc de
inc hl
jr .loop1
.done
and a
.loop2
ld a, [de]
sbc [hl]
jr z, .okay
inc c
.okay
dec de
dec hl
dec b
jr nz, .loop2
jr c, .set_carry
ld a, c
and a
jr .skip_carry
.set_carry
ld a, $1
and a
scf
.skip_carry
pop bc
pop de
pop hl
ret
; 16035
SubtractMoney: ; 16035
ld a, 3
SubtractFunds: ; 16037
push hl
push de
push bc
ld h, b
ld l, c
ld b, a
ld c, 0
.loop
dec a
jr z, .done
inc de
inc hl
jr .loop
.done
and a
.loop2
ld a, [de]
sbc [hl]
ld [de], a
dec de
dec hl
dec b
jr nz, .loop2
pop bc
pop de
pop hl
ret
; 16053
AddMoney: ; 16053
ld a, $3
AddFunds: ; 16055
push hl
push de
push bc
ld h, b
ld l, c
ld b, a
.loop1
dec a
jr z, .done
inc de
inc hl
jr .loop1
.done
and a
.loop2
ld a, [de]
adc [hl]
ld [de], a
dec de
dec hl
dec b
jr nz, .loop2
pop bc
pop de
pop hl
ret
; 1606f
GiveCoins:: ; 1606f
ld a, 2
ld de, Coins
call AddFunds
ld a, 2
ld bc, .maxcoins
call CompareFunds
jr c, .not_maxed
ld hl, .maxcoins
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
scf
ret
.not_maxed
and a
ret
; 1608d
.maxcoins: ; 1608d
bigdw 9999
; 1608f
TakeCoins:: ; 1608f
ld a, 2
ld de, Coins
call SubtractFunds
jr nc, .asm_1609f
xor a
ld [de], a
inc de
ld [de], a
scf
ret
.asm_1609f
and a
ret
; 160a1
CheckCoins:: ; 160a1
ld a, $2
ld de, Coins
jp CompareFunds
; 160a9

705
engine/pokecenter_pc.asm Executable file
View File

@ -0,0 +1,705 @@
PokemonCenterPC: ; 1559a
call PC_CheckPartyForPokemon
ret c
call PC_PlayBootSound
ld hl, UnknownText_0x15a27
call PC_DisplayText
ld hl, UnknownText_0x15a2c
call PC_DisplayTextWaitMenu
ld hl, .TopMenu
call LoadMenuDataHeader
.loop
xor a
ld [hBGMapMode], a
call .ChooseWhichPCListToUse
ld [wcf76], a
call DoNthMenu
jr c, .shutdown
ld a, [MenuSelection]
ld hl, .JumpTable
call MenuJumptable
jr nc, .loop
.shutdown
call PC_PlayShutdownSound
call ExitMenu
call WriteBackup
ret
; 155d6
.TopMenu: ; 0x155d6
db $48 ; flags
db 00, 00 ; start coords
db 12, 15 ; end coords
dw .MenuData2
db 1 ; default option
; 0x155de
.MenuData2: ; 0x155de
db $a0 ; flags
db 0 ; items
dw .WhichPC
dw PlaceNthMenuStrings
dw .JumpTable
; 0x155e6
.JumpTable: ; 155e6
dw PlayersPC, .String_PlayersPC
dw BillsPC, .String_BillsPC
dw OaksPC, .String_OaksPC
dw HallOfFamePC, .String_HallOfFame
dw TurnOffPC, .String_TurnOff
; 155fa
.String_PlayersPC: db "<PLAYER>'s PC@"
.String_BillsPC: db "BILL's PC@"
.String_OaksPC: db "PROF.OAK's PC@"
.String_HallOfFame: db "HALL OF FAME@"
.String_TurnOff: db "TURN OFF@"
; 1562c
.WhichPC: ; 1562c
; before pokedex
db 3 ; items
db 1, 0, 4 ; bill's, player's, turn off
db -1
; before Hall Of Fame
db 4 ; items
db 1, 0, 2, 4 ; bill's, player's, oak's, turn off
db -1
; postgame
db 5 ; items
db 1, 0, 2, 3, 4 ; bill's, player's, oak's, hall of fame, turn off
db -1
; 1563e
.ChooseWhichPCListToUse: ; 1563e
call CheckReceivedDex
jr nz, .got_dex
ld a, $0
ret
.got_dex
ld a, [wHallOfFameCount]
and a
ld a, $1
ret z
ld a, $2
ret
; 15650
PC_CheckPartyForPokemon: ; 15650
ld a, [PartyCount]
and a
ret nz
ld de, SFX_CHOOSE_PC_OPTION
call PlaySFX
ld hl, UnknownText_0x15663
call PC_DisplayText
scf
ret
; 15663
UnknownText_0x15663: ; 0x15663
; Bzzzzt! You must have a #MON to use this!
text_jump UnknownText_0x1c1328
db "@"
; 0x15668
BillsPC: ; 15668
call PC_PlayChoosePCSound
ld hl, UnknownText_0x15a31
call PC_DisplayText
callba _BillsPC
and a
ret
; 15679 (5:5679)
PlayersPC: ; 15679
call PC_PlayChoosePCSound
ld hl, UnknownText_0x15a36
call PC_DisplayText
ld b, $0
call _PlayersPC
and a
ret
; 15689
OaksPC: ; 15689
call PC_PlayChoosePCSound
ld hl, UnknownText_0x15a3b
call PC_DisplayText
callba ProfOaksPC
and a
ret
; 1569a
HallOfFamePC: ; 1569a
call PC_PlayChoosePCSound
call FadeToMenu
callba _HallOfFamePC
call Function2b3c
and a
ret
; 156ab
TurnOffPC: ; 156ab
ld hl, UnknownText_0x15a40
call PrintText
scf
ret
; 156b3
PC_PlayBootSound: ; 156b3
ld de, SFX_BOOT_PC
jr PC_WaitPlaySFX
PC_PlayShutdownSound: ; 156b8
ld de, SFX_SHUT_DOWN_PC
call PC_WaitPlaySFX
call WaitSFX
ret
PC_PlayChoosePCSound: ; 156c2
ld de, SFX_CHOOSE_PC_OPTION
jr PC_WaitPlaySFX
Function156c7: ; 156c7
ld de, SFX_SWITCH_POKEMON
call PC_WaitPlaySFX
ld de, SFX_SWITCH_POKEMON
PC_WaitPlaySFX: ; 156d0
push de
call WaitSFX
pop de
call PlaySFX
ret
; 156d9
Function156d9: ; 156d9
call PC_PlayBootSound
ld hl, UnknownText_0x156ff
call PC_DisplayText
ld b, $1
call _PlayersPC
and a
jr nz, .asm_156f9
call OverworldTextModeSwitch
call Function321c
call UpdateSprites
call PC_PlayShutdownSound
ld c, $0
ret
.asm_156f9
call ClearBGPalettes
ld c, $1
ret
; 156ff
UnknownText_0x156ff: ; 0x156ff
; turned on the PC.
text_jump UnknownText_0x1c1353
db "@"
; 0x15704
_PlayersPC: ; 15704
ld a, b
ld [wcf76], a
ld hl, UnknownText_0x157cc
call PC_DisplayTextWaitMenu
call Function15715
call ExitMenu
ret
; 15715
Function15715: ; 15715
xor a
ld [wd0d7], a
ld [wd0dd], a
ld hl, KrissPCMenuData
call LoadMenuDataHeader
.asm_15722
call UpdateTimePals
call DoNthMenu
jr c, .asm_15731
call MenuJumptable
jr nc, .asm_15722
jr .asm_15732
.asm_15731
xor a
.asm_15732
call ExitMenu
ret
; 15736
KrissPCMenuData: ; 0x15736
db %01000000
db 0, 0 ; top left corner coords (y, x)
db 12, 15 ; bottom right corner coords (y, x)
dw .KrissPCMenuData2
db 1 ; default selected option
.KrissPCMenuData2
db %10100000 ; bit7
db 0 ; # items?
dw .KrissPCMenuList1
dw PlaceNthMenuStrings
dw .KrissPCMenuPointers
.KrissPCMenuPointers ; 0x15746
dw KrisWithdrawItemMenu, .WithdrawItem
dw KrisDepositItemMenu, .DepositItem
dw KrisTossItemMenu, .TossItem
dw KrisMailBoxMenu, .MailBox
dw KrisDecorationMenu, .Decoration
dw KrisLogOffMenu, .LogOff
dw KrisLogOffMenu, .TurnOff
.WithdrawItem db "WITHDRAW ITEM@"
.DepositItem db "DEPOSIT ITEM@"
.TossItem db "TOSS ITEM@"
.MailBox db "MAIL BOX@"
.Decoration db "DECORATION@"
.TurnOff db "TURN OFF@"
.LogOff db "LOG OFF@"
WITHDRAW_ITEM EQU 0
DEPOSIT_ITEM EQU 1
TOSS_ITEM EQU 2
MAIL_BOX EQU 3
DECORATION EQU 4
TURN_OFF EQU 5
LOG_OFF EQU 6
.KrissPCMenuList1
db 5
db WITHDRAW_ITEM
db DEPOSIT_ITEM
db TOSS_ITEM
db MAIL_BOX
db TURN_OFF
db -1
.KrissPCMenuList2
db 6
db WITHDRAW_ITEM
db DEPOSIT_ITEM
db TOSS_ITEM
db MAIL_BOX
db DECORATION
db LOG_OFF
db -1
PC_DisplayTextWaitMenu: ; 157bb
ld a, [Options]
push af
set NO_TEXT_SCROLL, a
ld [Options], a
call MenuTextBox
pop af
ld [Options], a
ret
; 157cc
UnknownText_0x157cc: ; 0x157cc
; What do you want to do?
text_jump UnknownText_0x1c1368
db "@"
; 0x157d1
KrisWithdrawItemMenu: ; 0x157d1
call LoadStandardMenuDataHeader
callba ClearPCItemScreen
.asm_157da
call Function15985
jr c, .asm_157e4
call Function157e9
jr .asm_157da
.asm_157e4
call Function2b3c
xor a
ret
; 0x157e9
Function157e9: ; 0x157e9
; check if the item has a quantity
callba _CheckTossableItem
ld a, [wItemAttributeParamBuffer]
and a
jr z, .askquantity
; items without quantity are always ×1
ld a, 1
ld [wItemQuantityChangeBuffer], a
jr .withdraw
.askquantity
ld hl, .HowManyText
call MenuTextBox
callba Function24fbf
call ExitMenu
call ExitMenu
jr c, .done
.withdraw
ld a, [wItemQuantityChangeBuffer]
ld [Buffer1], a ; quantity
ld a, [wd107]
ld [Buffer2], a
ld hl, NumItems
call ReceiveItem
jr nc, .PackFull
ld a, [Buffer1]
ld [wItemQuantityChangeBuffer], a
ld a, [Buffer2]
ld [wd107], a
ld hl, PCItems
call TossItem
predef PartyMonItemName
ld hl, .WithdrewText
call MenuTextBox
xor a
ld [hBGMapMode], a
call ExitMenu
ret
.PackFull
ld hl, .NoRoomText
call MenuTextBoxBackup
ret
.done
ret
; 0x15850
.HowManyText ; 0x15850
text_jump _KrissPCHowManyWithdrawText
db "@"
.WithdrewText ; 0x15855
text_jump _KrissPCWithdrewItemsText
db "@"
.NoRoomText ; 0x1585a
text_jump _KrissPCNoRoomWithdrawText
db "@"
KrisTossItemMenu: ; 0x1585f
call LoadStandardMenuDataHeader
callba ClearPCItemScreen
.asm_15868
call Function15985
jr c, .asm_15878
ld de, PCItems
callba Function129f4
jr .asm_15868
.asm_15878
call Function2b3c
xor a
ret
; 0x1587d
KrisDecorationMenu: ; 0x1587d
callba _KrisDecorationMenu
ld a, c
and a
ret z
scf
ret
; 0x15888
KrisLogOffMenu: ; 0x15888
xor a
scf
ret
; 0x1588b
KrisDepositItemMenu: ; 0x1588b
call Function158b8
jr c, .asm_158b6
call DisableSpriteUpdates
call LoadStandardMenuDataHeader
callba Function106a5
.asm_1589c
callba Function106be
ld a, [wcf66]
and a
jr z, .asm_158b3
call Function158cc
callba CheckRegisteredItem
jr .asm_1589c
.asm_158b3
call Function2b3c
.asm_158b6
xor a
ret
; 0x158b8
Function158b8: ; 0x158b8
callba Function129d5
ret nc
ld hl, UnknownText_0x158c7
call MenuTextBoxBackup
scf
ret
; 0x158c7
UnknownText_0x158c7: ; 0x158c7
; No items here!
text_jump UnknownText_0x1c13df
db "@"
; 0x158cc
Function158cc: ; 0x158cc
ld a, [wc2ce]
push af
ld a, $0
ld [wc2ce], a
callba CheckItemMenu
ld a, [wItemAttributeParamBuffer]
ld hl, .jumptable
rst JumpTable
pop af
ld [wc2ce], a
ret
; 0x158e7
.jumptable: ; 0x158e7
dw .tossable
dw .no_toss
dw .no_toss
dw .no_toss
dw .tossable
dw .tossable
dw .tossable
.no_toss:
ret
.tossable:
ld a, [Buffer1]
push af
ld a, [Buffer2]
push af
call Function1590a
pop af
ld [Buffer2], a
pop af
ld [Buffer1], a
ret
; 0x1590a
Function1590a: ; 0x1590a
callba _CheckTossableItem
ld a, [wItemAttributeParamBuffer]
and a
jr z, .asm_1591d
ld a, $1
ld [wItemQuantityChangeBuffer], a
jr .asm_15933
.asm_1591d
ld hl, .HowManyText
call MenuTextBox
callba Function24fbf
push af
call ExitMenu
call ExitMenu
pop af
jr c, .asm_1596c
.asm_15933
ld a, [wItemQuantityChangeBuffer]
ld [Buffer1], a
ld a, [wd107]
ld [Buffer2], a
ld hl, PCItems
call ReceiveItem
jr nc, .asm_15965
ld a, [Buffer1]
ld [wItemQuantityChangeBuffer], a
ld a, [Buffer2]
ld [wd107], a
ld hl, NumItems
call TossItem
predef PartyMonItemName
ld hl, .DepositText
call PrintText
ret
.asm_15965
ld hl, .NoRoomText
call PrintText
ret
.asm_1596c
and a
ret
; 0x1596e
.HowManyText ; 0x1596e
text_jump _KrissPCHowManyDepositText
db "@"
.DepositText ; 0x15973
text_jump _KrissPCDepositItemsText
db "@"
.NoRoomText ; 0x15978
text_jump _KrissPCNoRoomDepositText
db "@"
KrisMailBoxMenu: ; 0x1597d
callba _KrisMailBoxMenu
xor a
ret
; 0x15985
Function15985: ; 0x15985
xor a
ld [wd0e3], a
.asm_15989
ld a, [wc2ce]
push af
ld a, $0
ld [wc2ce], a
ld hl, MenuData15a08
call CopyMenuDataHeader
hlcoord 0, 0
ld b, $a
ld c, $12
call TextBox
ld a, [wd0d7]
ld [wMenuCursorBuffer], a
ld a, [wd0dd]
ld [wd0e4], a
call HandleScrollingMenu
ld a, [wd0e4]
ld [wd0dd], a
ld a, [MenuSelection2]
ld [wd0d7], a
pop af
ld [wc2ce], a
ld a, [wd0e3]
and a
jr nz, .asm_159d8
ld a, [wcf73]
cp $2
jr z, .asm_15a06
cp $1
jr z, .asm_159fb
cp $4
jr z, .asm_159f2
jr .asm_159f8
.asm_159d8
ld a, [wcf73]
cp $2
jr z, .asm_159e9
cp $1
jr z, .asm_159ef
cp $4
jr z, .asm_159ef
jr .asm_159f8
.asm_159e9
xor a
ld [wd0e3], a
jr .asm_159f8
.asm_159ef
call Function156c7
.asm_159f2
callba Function2490c
.asm_159f8
jp .asm_15989
.asm_159fb
callba Function24706
call Function1bee
and a
ret
.asm_15a06
scf
ret
; 0x15a08
MenuData15a08: ; 0x15a08
db %01000000
db 1, 4 ; start coords
db 10, 18 ; end coords
dw .MenuData2
db 1 ; default option
.MenuData2
db %10110000
db 4, 8 ; rows/cols?
db 2 ; horizontal spacing?
dbw 0, PCItems
dba PlaceMenuItemName
dba PlaceMenuItemQuantity
dba Function244c3
PC_DisplayText: ; 15a20
call MenuTextBox
call ExitMenu
ret
; 15a27
UnknownText_0x15a27: ; 0x15a27
; turned on the PC.
text_jump UnknownText_0x1c144d
db "@"
; 0x15a2c
UnknownText_0x15a2c: ; 0x15a2c
; Access whose PC?
text_jump UnknownText_0x1c1462
db "@"
; 0x15a31
UnknownText_0x15a31: ; 0x15a31
; BILL's PC accessed. #MON Storage System opened.
text_jump UnknownText_0x1c1474
db "@"
; 0x15a36
UnknownText_0x15a36: ; 0x15a36
; Accessed own PC. Item Storage System opened.
text_jump UnknownText_0x1c14a4
db "@"
; 0x15a3b
UnknownText_0x15a3b: ; 0x15a3b
; PROF.OAK's PC accessed. #DEX Rating System opened.
text_jump UnknownText_0x1c14d2
db "@"
; 0x15a40
UnknownText_0x15a40: ; 0x15a40
; … Link closed…
text_jump UnknownText_0x1c1505
db "@"
; 0x15a45

771
engine/timeset.asm Executable file
View File

@ -0,0 +1,771 @@
InitClock: ; 90672 (24:4672)
; Ask the player to set the time.
ld a, [hInMenu]
push af
ld a, $1
ld [hInMenu], a
ld a, $0
ld [wc2ce], a
ld a, $10
ld [MusicFade], a
ld a, MUSIC_NONE % $100
ld [MusicFadeIDLo], a
ld a, MUSIC_NONE / $100
ld [MusicFadeIDHi], a
ld c, 8
call DelayFrames
call Function4dd
call ClearTileMap
call ClearSprites
ld b, SCGB_08
call GetSGBLayout
xor a
ld [hBGMapMode], a
call LoadStandardFont
ld de, GFX_908fb
ld hl, VTiles2 tile $00
lb bc, BANK(GFX_908fb), 1
call Request1bpp
ld de, GFX_90903
ld hl, VTiles2 tile $01
lb bc, BANK(GFX_90903), 1
call Request1bpp
ld de, GFX_9090b
ld hl, VTiles2 tile $02
lb bc, BANK(GFX_9090b), 1
call Request1bpp
call .ClearScreen
call WaitBGMap
call Function4a3
ld hl, UnknownText_0x90874
call PrintText
ld hl, wc608
ld bc, 50
xor a
call ByteFill
ld a, $a
ld [wInitHourBuffer], a
.loop
ld hl, UnknownText_0x90879
call PrintText
hlcoord 3, 7
ld b, 2
ld c, 15
call TextBox
hlcoord 11, 7
ld [hl], $1
hlcoord 11, 10
ld [hl], $2
hlcoord 4, 9
call DisplayHourOClock
ld c, 10
call DelayFrames
.SetHourLoop
call JoyTextDelay
call SetHour
jr nc, .SetHourLoop
ld a, [wInitHourBuffer]
ld [StringBuffer2 + 1], a
call .ClearScreen
ld hl, UnknownText_0x90886
call PrintText
call YesNoBox
jr nc, .HourIsSet
call .ClearScreen
jr .loop
.HourIsSet
ld hl, UnknownText_0x9089a
call PrintText
hlcoord 11, 7
lb bc, 2, 7
call TextBox
hlcoord 15, 7
ld [hl], $1
hlcoord 15, 10
ld [hl], $2
hlcoord 12, 9
call DisplayMinutesWithMinString
ld c, 10
call DelayFrames
.SetMinutesLoop
call JoyTextDelay
call SetMinutes
jr nc, .SetMinutesLoop
ld a, [BattleMonNick + 5]
ld [StringBuffer2 + 2], a
call .ClearScreen
ld hl, UnknownText_0x908a4
call PrintText
call YesNoBox
jr nc, .MinutesAreSet
call .ClearScreen
jr .HourIsSet
.MinutesAreSet
call Function658
ld hl, OakText_ResponseToSetTime
call PrintText
call WaitPressAorB_BlinkCursor
pop af
ld [hInMenu], a
ret
.ClearScreen: ; 90783 (24:4783)
xor a
ld [hBGMapMode], a
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
xor a
call ByteFill
ld a, $1
ld [hBGMapMode], a
ret
SetHour: ; 90795 (24:4795)
ld a, [hJoyPressed]
and A_BUTTON
jr nz, .Confirm
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, .up
ld a, [hl]
and D_DOWN
jr nz, .down
call DelayFrame
and a
ret
.down
ld hl, wInitHourBuffer
ld a, [hl]
and a
jr nz, .DecreaseThroughMidnight
ld a, 23 + 1
.DecreaseThroughMidnight
dec a
ld [hl], a
jr .okay
.up
ld hl, wInitHourBuffer
ld a, [hl]
cp 23
jr c, .AdvanceThroughMidnight
ld a, -1
.AdvanceThroughMidnight
inc a
ld [hl], a
.okay
hlcoord 4, 9
ld a, " "
ld bc, 15
call ByteFill
hlcoord 4, 9
call DisplayHourOClock
call WaitBGMap
and a
ret
.Confirm
scf
ret
DisplayHourOClock: ; 907de (24:47de)
push hl
ld a, [wInitHourBuffer]
ld c, a
ld e, l
ld d, h
call PrintHour
inc hl
ld de, String_oclock
call PlaceString
pop hl
ret
; 907f1 (24:47f1)
Function907f1: ; 907f1
ld h, d
ld l, e
push hl
call DisplayHourOClock
pop de
rept 2
inc de
endr
ld a, $9c
ld [de], a
inc de
push de
ld hl, $3
add hl, de
ld a, [de]
inc de
ld [hli], a
ld a, [de]
ld [hl], a
pop hl
call DisplayMinutesWithMinString
rept 3
inc hl
endr
ret
; 90810
SetMinutes: ; 90810 (24:4810)
ld a, [hJoyPressed]
and A_BUTTON
jr nz, .asm_90857
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, .asm_90835
ld a, [hl]
and D_DOWN
jr nz, .asm_90828
call DelayFrame
and a
ret
.asm_90828
ld hl, BattleMonNick + 5
ld a, [hl]
and a
jr nz, .asm_90831
ld a, 59 + 1
.asm_90831
dec a
ld [hl], a
jr .asm_90841
.asm_90835
ld hl, BattleMonNick + 5
ld a, [hl]
cp 59
jr c, .asm_9083f
ld a, -1
.asm_9083f
inc a
ld [hl], a
.asm_90841
hlcoord 12, 9
ld a, " "
ld bc, 7
call ByteFill
hlcoord 12, 9
call DisplayMinutesWithMinString
call WaitBGMap
and a
ret
.asm_90857
scf
ret
DisplayMinutesWithMinString: ; 90859 (24:4859)
ld de, BattleMonNick + 5
call PrintTwoDigitNumberRightAlign
inc hl
ld de, String_min
call PlaceString
ret
PrintTwoDigitNumberRightAlign: ; 90867 (24:4867)
push hl
ld a, " "
ld [hli], a
ld [hl], a
pop hl
lb bc, PRINTNUM_RIGHTALIGN | 1, 2
call PrintNum
ret
; 90874 (24:4874)
UnknownText_0x90874: ; 0x90874
; Zzz… Hm? Wha…? You woke me up! Will you check the clock for me?
text_jump UnknownText_0x1bc29c
db "@"
; 0x90879
UnknownText_0x90879: ; 0x90879
; What time is it?
text_jump UnknownText_0x1bc2eb
db "@"
; 0x9087e
String_oclock:
db "o'clock@"
; 90886
UnknownText_0x90886: ; 0x90886
; What?@ @
text_jump UnknownText_0x1bc2fd
start_asm
hlcoord 1, 16
call DisplayHourOClock
ld hl, UnknownText_0x90895
ret
; 90895 (24:4895)
UnknownText_0x90895: ; 0x90895
; ?
text_jump UnknownText_0x1bc305
db "@"
; 0x9089a
UnknownText_0x9089a: ; 0x9089a
; How many minutes?
text_jump UnknownText_0x1bc308
db "@"
; 0x9089f
String_min:
db "min.@"
; 908a4
UnknownText_0x908a4: ; 0x908a4
; Whoa!@ @
text_jump UnknownText_0x1bc31b
start_asm
; 0x908a9
hlcoord 7, 14
call DisplayMinutesWithMinString
ld hl, UnknownText_0x908b3
ret
; 908b3 (24:48b3)
UnknownText_0x908b3: ; 0x908b3
; ?
text_jump UnknownText_0x1bc323
db "@"
; 0x908b8
OakText_ResponseToSetTime: ; 0x908b8
start_asm
decoord 1, 14
ld a, [wInitHourBuffer]
ld c, a
call PrintHour
ld [hl], ":"
inc hl
ld de, BattleMonNick + 5
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ld b, h
ld c, l
ld a, [wInitHourBuffer]
cp 4
jr c, .NITE
cp 11
jr c, .MORN
cp 18
jr c, .DAY
.NITE
ld hl, .sodark
ret
.MORN
ld hl, .overslept
ret
.DAY
ld hl, .yikes
ret
; 908ec (24:48ec)
.overslept: ; 0x908ec
; ! I overslept!
text_jump UnknownText_0x1bc326
db "@"
; 0x908f1
.yikes: ; 0x908f1
; ! Yikes! I over- slept!
text_jump UnknownText_0x1bc336
db "@"
; 0x908f6
.sodark: ; 0x908f6
; ! No wonder it's so dark!
text_jump UnknownText_0x1bc34f
db "@"
; 0x908fb
GFX_908fb: ; 908fb
INCBIN "gfx/unknown/0908fb.2bpp"
GFX_90903: ; 90903
INCBIN "gfx/unknown/090903.2bpp"
GFX_9090b: ; 9090b
INCBIN "gfx/unknown/09090b.2bpp"
; 90913
Special_SetDayOfWeek: ; 90913
ld a, [hInMenu]
push af
ld a, $1
ld [hInMenu], a
ld de, GFX_90903
ld hl, VTiles1 tile $6f
lb bc, BANK(GFX_90903), 1
call Request1bpp
ld de, GFX_9090b
ld hl, VTiles1 tile $75
lb bc, BANK(GFX_9090b), 1
call Request1bpp
xor a
ld [wd002], a
.asm_90936
hlcoord 0, 12
lb bc, 4, 18
call TextBox
call LoadStandardMenuDataHeader
ld hl, UnknownText_0x90a3f
call PrintText
hlcoord 9, 3
ld b, 2
ld c, 9
call TextBox
hlcoord 14, 3
ld [hl], $ef
hlcoord 14, 6
ld [hl], $f5
hlcoord 10, 5
call Function909de
call Function321c
ld c, 10
call DelayFrames
.asm_9096a
call JoyTextDelay
call Function90993
jr nc, .asm_9096a
call ExitMenu
call UpdateSprites
ld hl, UnknownText_0x90a44
call PrintText
call YesNoBox
jr c, .asm_90936
ld a, [wd002]
ld [StringBuffer2], a
call Function663
call LoadStandardFont
pop af
ld [hInMenu], a
ret
; 90993
Function90993: ; 90993
ld a, [hJoyPressed]
and A_BUTTON
jr z, .asm_9099b
scf
ret
.asm_9099b
ld hl, hJoyLast
ld a, [hl]
and D_UP
jr nz, .asm_909ba
ld a, [hl]
and D_DOWN
jr nz, .asm_909ad
call DelayFrame
and a
ret
.asm_909ad
ld hl, wd002
ld a, [hl]
and a
jr nz, .asm_909b6
ld a, 6 + 1
.asm_909b6
dec a
ld [hl], a
jr .asm_909c6
.asm_909ba
ld hl, wd002
ld a, [hl]
cp 6
jr c, .asm_909c4
ld a, -1
.asm_909c4
inc a
ld [hl], a
.asm_909c6
xor a
ld [hBGMapMode], a
hlcoord 10, 4
ld b, $2
ld c, $9
call ClearBox
hlcoord 10, 5
call Function909de
call WaitBGMap
and a
ret
; 909de
Function909de: ; 909de
push hl
ld a, [wd002]
ld e, a
ld d, 0
ld hl, WeekdaysStrings
rept 2
add hl, de
endr
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
call PlaceString
ret
; 909f2
WeekdaysStrings: ; 909f2
dw Sunday
dw Monday
dw Tuesday
dw Wednesday
dw Thursday
dw Friday
dw Saturday
dw Sunday
Sunday: db " SUNDAY@"
Monday: db " MONDAY@"
Tuesday: db " TUESDAY@"
Wednesday: db "WEDNESDAY@"
Thursday: db "THURSDAY@"
Friday: db " FRIDAY@"
Saturday: db "SATURDAY@"
UnknownText_0x90a3f: ; 0x90a3f
; What day is it?
text_jump UnknownText_0x1bc369
db "@"
; 0x90a44
UnknownText_0x90a44: ; 0x90a44
start_asm
hlcoord 1, 14
call Function909de
ld hl, UnknownText_0x90a4f
ret
; 90a4f (24:4a4f)
UnknownText_0x90a4f: ; 0x90a4f
; , is it?
text_jump UnknownText_0x1bc37a
db "@"
; 0x90a54
Special_InitialSetDSTFlag: ; 90a54
ld a, [wDST]
set 7, a
ld [wDST], a
hlcoord 1, 14
lb bc, 3, 18
call ClearBox
ld hl, UnknownText_0x90a6c
call PlaceWholeStringInBoxAtOnce
ret
; 90a6c
UnknownText_0x90a6c: ; 90a6c
start_asm
call UpdateTime
ld a, [hHours]
ld b, a
ld a, [hMinutes]
ld c, a
decoord 1, 14
callba PrintHoursMins
ld hl, TextJump_DSTIsThatOK
ret
; 90a83 (24:4a83)
TextJump_DSTIsThatOK: ; 0x90a83
; DST, is that OK?
text_jump Text_DSTIsThatOK
db "@"
; 0x90a88
Special_InitialClearDSTFlag: ; 90a88
ld a, [wDST]
res 7, a
ld [wDST], a
hlcoord 1, 14
lb bc, 3, 18
call ClearBox
ld hl, UnknownText_0x90aa0
call PlaceWholeStringInBoxAtOnce
ret
; 90aa0
UnknownText_0x90aa0: ; 90aa0
start_asm
call UpdateTime
ld a, [hHours]
ld b, a
ld a, [hMinutes]
ld c, a
decoord 1, 14
callba PrintHoursMins
ld hl, UnknownText_0x90ab7
ret
; 90ab7
UnknownText_0x90ab7: ; 0x90ab7
; , is that OK?
text_jump UnknownText_0x1c5ff1
db "@"
; 0x90abc
Function90abc: ; 90abc
hlcoord 1, 14
lb bc, 3, SCREEN_WIDTH - 2
call ClearBox
ld hl, UnknownText_0x90acc
call PlaceWholeStringInBoxAtOnce
ret
; 90acc
UnknownText_0x90acc: ; 0x90acc
start_asm
call UpdateTime
hlcoord 1, 14
ld [hl], "R"
inc hl
ld [hl], "T"
inc hl
ld [hl], " "
inc hl
ld de, hRTCDayLo
call Function90b23
hlcoord 1, 16
ld [hl], "D"
inc hl
ld [hl], "F"
inc hl
ld [hl], " "
inc hl
ld de, StartDay
call Function90b23
ld [hl], " "
inc hl
ld a, [wDST]
bit 7, a
jr z, .off
ld [hl], "O"
inc hl
ld [hl], "N"
inc hl
jr .done
.off
ld [hl], "O"
inc hl
ld [hl], "F"
inc hl
ld [hl], "F"
inc hl
.done
ld hl, UnknownText_0x90b13
ret
; 90b13
UnknownText_0x90b13: ; 0x90b13
text "<PARA>Now on DEBUG…"
prompt
; 0x90b23
Function90b23: ; 90b23
lb bc, 1, 3
call PrintNum
ld [hl], "."
inc hl
inc de
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ld [hl], ":"
inc hl
inc de
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ret
; 90b3e
PrintHour: ; 90b3e (24:4b3e)
ld l, e
ld h, d
push bc
call GetTimeOfDayString
call PlaceString
ld l, c
ld h, b
inc hl
pop bc
call AdjustHourForAMorPM
ld [wd265], a
ld de, wd265
call PrintTwoDigitNumberRightAlign
ret
GetTimeOfDayString: ; 90b58 (24:4b58)
ld a, c
cp 4
jr c, .nite
cp 10
jr c, .morn
cp 18
jr c, .day
.nite
ld de, .NITE
ret
.morn
ld de, .MORN
ret
.day
ld de, .DAY
ret
; 90b71 (24:4b71)
.NITE: db "NITE@"
.MORN: db "MORN@"
.DAY: db "DAY@"
; 90b7f
AdjustHourForAMorPM:
; Convert the hour stored in c (0-23) to a 1-12 value
ld a, c
or a
jr z, .midnight
cp 12
ret c
ret z
sub 12
ret
.midnight
ld a, 12
ret

View File

@ -11,7 +11,7 @@ SpecialBuenasPassword: ; 8af6b
add $2 add $2
ld [wMenuBorderRightCoord], a ld [wMenuBorderRightCoord], a
call BackUpTiles call BackUpTiles
call Function1e5d ; menu call DoNthMenu ; menu
callba Function4ae5e callba Function4ae5e
ld b, $0 ld b, $0
ld a, [MenuSelection] ld a, [MenuSelection]

768
event/daycare.asm Executable file
View File

@ -0,0 +1,768 @@
Special_DayCareMan: ; 166d6
ld hl, wDaycareMan
bit 0, [hl]
jr nz, .asm_166fe
ld hl, wDaycareMan
ld a, $0
call Function1678f
jr c, .asm_16724
call Function16798
jr c, .asm_16721
callba Functionde2a
ld hl, wDaycareMan
set 0, [hl]
call Function167f6
call Function16a3b
ret
.asm_166fe
callba Functione698
ld hl, wBreedMon1Nick
call Function1686d
call Function16807
jr c, .asm_16721
callba Functiondd21
call Function16850
ld hl, wDaycareMan
res 0, [hl]
res 5, [hl]
jr .asm_16724
.asm_16721
call Function1689b
.asm_16724
ld a, $13
call Function1689b
ret
; 1672a
Special_DayCareLady: ; 1672a
ld hl, wDaycareLady
bit 0, [hl]
jr nz, .asm_16752
ld hl, wDaycareLady
ld a, $2
call Function16781
jr c, .asm_1677b
call Function16798
jr c, .asm_16778
callba Functionde37
ld hl, wDaycareLady
set 0, [hl]
call Function167f6
call Function16a3b
ret
.asm_16752
callba Functione6b3
ld hl, wBreedMon2Nick
call Function1686d
call Function16807
jr c, .asm_16778
callba Functiondd42
call Function16850
ld hl, wDaycareLady
res 0, [hl]
ld hl, wDaycareMan
res 5, [hl]
jr .asm_1677b
.asm_16778
call Function1689b
.asm_1677b
ld a, $13
call Function1689b
ret
; 16781
Function16781: ; 16781
bit 7, [hl]
jr nz, .asm_16788
set 7, [hl]
inc a
.asm_16788
call Function1689b
call YesNoBox
ret
; 1678f
Function1678f: ; 1678f
set 7, [hl]
call Function1689b
call YesNoBox
ret
; 16798
Function16798: ; 16798
ld a, [PartyCount]
cp 2
jr c, .asm_167e5
ld a, 4
call Function1689b
ld b, 6
callba Function5001d
jr c, .asm_167dd
ld a, [CurPartySpecies]
cp EGG
jr z, .asm_167e1
callba CheckCurPartyMonFainted
jr c, .asm_167e9
ld hl, PartyMon1Item
ld bc, PARTYMON_STRUCT_LENGTH
ld a, [CurPartyMon]
call AddNTimes
ld d, [hl]
callba ItemIsMail
jr c, .asm_167ed
ld hl, PartyMonNicknames
ld a, [CurPartyMon]
call GetNick
and a
ret
.asm_167dd
ld a, $12
scf
ret
.asm_167e1
ld a, $6
scf
ret
.asm_167e5
ld a, $7
scf
ret
.asm_167e9
ld a, $8
scf
ret
.asm_167ed
ld a, $a
scf
ret
; 167f1
UnknownText_0x167f1: ; 0x167f1
;
text_jump UnknownText_0x1bdaa7
db "@"
; 0x167f6
Function167f6: ; 167f6
ld a, $5
call Function1689b
ld a, [CurPartySpecies]
call PlayCry
ld a, $9
call Function1689b
ret
; 16807
Function16807: ; 16807
ld a, [StringBuffer2 + 1]
and a
jr nz, .asm_16819
ld a, $f
call Function1689b
call YesNoBox
jr c, .asm_16844
jr .asm_1682d
.asm_16819
ld a, $b
call Function1689b
call YesNoBox
jr c, .asm_16844
ld a, $c
call Function1689b
call YesNoBox
jr c, .asm_16844
.asm_1682d
ld de, Money
ld bc, StringBuffer2 + 2
callba CompareMoney
jr c, .asm_16848
ld a, [PartyCount]
cp $6
jr nc, .asm_1684c
and a
ret
.asm_16844
ld a, $12
scf
ret
.asm_16848
ld a, $11
scf
ret
.asm_1684c
ld a, $10
scf
ret
; 16850
Function16850: ; 16850
ld bc, StringBuffer2 + 2
ld de, Money
callba TakeMoney
ld a, $d
call Function1689b
ld a, [CurPartySpecies]
call PlayCry
ld a, $e
call Function1689b
ret
; 1686d
Function1686d: ; 1686d
ld a, b
ld [StringBuffer2], a
ld a, d
ld [StringBuffer2 + 1], a
ld de, StringBuffer1
ld bc, NAME_LENGTH
call CopyBytes
ld hl, 0
ld bc, $64
ld a, [StringBuffer2 + 1]
call AddNTimes
ld de, $64
add hl, de
xor a
ld [StringBuffer2 + 2], a
ld a, h
ld [StringBuffer2 + 3], a
ld a, l
ld [StringBuffer2 + 4], a
ret
; 1689b
Function1689b: ; 1689b
ld e, a
ld d, 0
ld hl, TextTable_168aa
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
call PrintText
ret
; 168aa
TextTable_168aa: ; 168aa
dw UnknownText_0x168d2
dw UnknownText_0x168d7
dw UnknownText_0x168dc
dw UnknownText_0x168e1
dw UnknownText_0x168e6
dw UnknownText_0x168ff
dw UnknownText_0x168f0
dw UnknownText_0x168eb
dw UnknownText_0x168fa
dw UnknownText_0x16904
dw UnknownText_0x168f5
dw UnknownText_0x16909
dw UnknownText_0x1690e
dw UnknownText_0x16913
dw UnknownText_0x16918
dw UnknownText_0x1691d
dw UnknownText_0x16922
dw UnknownText_0x16927
dw UnknownText_0x1692c
dw UnknownText_0x16931
; 168d2
UnknownText_0x168d2: ; 0x168d2
; I'm the DAY-CARE MAN. Want me to raise a #MON?
text_jump UnknownText_0x1bdaa9
db "@"
; 0x168d7
UnknownText_0x168d7: ; 0x168d7
; I'm the DAY-CARE MAN. Do you know about EGGS? I was raising #MON with my wife, you see. We were shocked to find an EGG! How incredible is that? So, want me to raise a #MON?
text_jump UnknownText_0x1bdad8
db "@"
; 0x168dc
UnknownText_0x168dc: ; 0x168dc
; I'm the DAY-CARE LADY. Should I raise a #MON for you?
text_jump UnknownText_0x1bdb85
db "@"
; 0x168e1
UnknownText_0x168e1: ; 0x168e1
; I'm the DAY-CARE LADY. Do you know about EGGS? My husband and I were raising some #MON, you see. We were shocked to find an EGG! How incredible could that be? Should I raise a #MON for you?
text_jump UnknownText_0x1bdbbb
db "@"
; 0x168e6
UnknownText_0x168e6: ; 0x168e6
; What should I raise for you?
text_jump UnknownText_0x1bdc79
db "@"
; 0x168eb
UnknownText_0x168eb: ; 0x168eb
; Oh? But you have just one #MON.
text_jump UnknownText_0x1bdc97
db "@"
; 0x168f0
UnknownText_0x168f0: ; 0x168f0
; Sorry, but I can't accept an EGG.
text_jump UnknownText_0x1bdcb8
db "@"
; 0x168f5
UnknownText_0x168f5: ; 0x168f5
; Remove MAIL before you come see me.
text_jump UnknownText_0x1bdcda
db "@"
; 0x168fa
UnknownText_0x168fa: ; 0x168fa
; If you give me that, what will you battle with?
text_jump UnknownText_0x1bdcff
db "@"
; 0x168ff
UnknownText_0x168ff: ; 0x168ff
; OK. I'll raise your @ .
text_jump UnknownText_0x1bdd30
db "@"
; 0x16904
UnknownText_0x16904: ; 0x16904
; Come back for it later.
text_jump UnknownText_0x1bdd4b
db "@"
; 0x16909
UnknownText_0x16909: ; 0x16909
; Are we geniuses or what? Want to see your @ ?
text_jump UnknownText_0x1bdd64
db "@"
; 0x1690e
UnknownText_0x1690e: ; 0x1690e
; Your @ has grown a lot. By level, it's grown by @ . If you want your #MON back, it will cost ¥@ .
text_jump UnknownText_0x1bdd96
db "@"
; 0x16913
UnknownText_0x16913: ; 0x16913
; Perfect! Here's your #MON.
text_jump UnknownText_0x1bde04
db "@"
; 0x16918
UnknownText_0x16918: ; 0x16918
; got back @ .
text_jump UnknownText_0x1bde1f
db "@"
; 0x1691d
UnknownText_0x1691d: ; 0x1691d
; Huh? Back already? Your @ needs a little more time with us. If you want your #MON back, it will cost ¥100.
text_jump UnknownText_0x1bde32
db "@"
; 0x16922
UnknownText_0x16922: ; 0x16922
; You have no room for it.
text_jump UnknownText_0x1bdea2
db "@"
; 0x16927
UnknownText_0x16927: ; 0x16927
; You don't have enough money.
text_jump UnknownText_0x1bdebc
db "@"
; 0x1692c
UnknownText_0x1692c: ; 0x1692c
; Oh, fine then.
text_jump UnknownText_0x1bded9
db "@"
; 0x16931
UnknownText_0x16931: ; 0x16931
; Come again.
text_jump UnknownText_0x1bdee9
db "@"
; 0x16936
Special_DayCareManOutside: ; 16936
ld hl, wDaycareMan
bit 6, [hl]
jr nz, Function16949
ld hl, UnknownText_0x16944
call PrintText
ret
UnknownText_0x16944: ; 0x16944
; Not yet…
text_jump UnknownText_0x1bdef6
db "@"
; 0x16949
Function16949: ; 16949
ld hl, UnknownText_0x16993
call PrintText
call YesNoBox
jr c, .asm_1697c
ld a, [PartyCount]
cp PARTY_LENGTH
jr nc, .asm_16987
call Function169ac
ld hl, wDaycareMan
res 6, [hl]
call Function16a3b
ld hl, UnknownText_0x16998
call PrintText
ld de, SFX_GET_EGG_FROM_DAYCARE_LADY
call PlaySFX
ld c, 120
call DelayFrames
ld hl, UnknownText_0x1699d
jr .asm_1697f
.asm_1697c
ld hl, UnknownText_0x169a2
.asm_1697f
call PrintText
xor a
ld [ScriptVar], a
ret
.asm_16987
ld hl, UnknownText_0x169a7
call PrintText
ld a, $1
ld [ScriptVar], a
ret
; 16993
UnknownText_0x16993: ; 0x16993
; Ah, it's you! We were raising your #MON, and my goodness, were we surprised! Your #MON had an EGG! We don't know how it got there, but your #MON had it. You want it?
text_jump UnknownText_0x1bdf00
db "@"
; 0x16998
UnknownText_0x16998: ; 0x16998
; received the EGG!
text_jump UnknownText_0x1bdfa5
db "@"
; 0x1699d
UnknownText_0x1699d: ; 0x1699d
; Take good care of it.
text_jump UnknownText_0x1bdfba
db "@"
; 0x169a2
UnknownText_0x169a2: ; 0x169a2
; Well then, I'll keep it. Thanks!
text_jump UnknownText_0x1bdfd1
db "@"
; 0x169a7
UnknownText_0x169a7: ; 0x169a7
; You have no room in your party. Come back later.
text_jump UnknownText_0x1bdff2
db "@"
; 0x169ac
Function169ac: ; 169ac
ld a, [wEggMonLevel]
ld [CurPartyLevel], a
ld hl, PartyCount
ld a, [hl]
cp PARTY_LENGTH
jr nc, .asm_16a2f
inc a
ld [hl], a
ld c, a
ld b, 0
add hl, bc
ld a, EGG
ld [hli], a
ld a, [wEggMonSpecies]
ld [CurSpecies], a
ld [CurPartySpecies], a
ld a, $ff
ld [hl], a
ld hl, PartyMonNicknames
ld bc, PKMN_NAME_LENGTH
call Function16a31
ld hl, wEggNick
call CopyBytes
ld hl, PartyMonOT
ld bc, NAME_LENGTH
call Function16a31
ld hl, wEggOT
call CopyBytes
ld hl, PartyMon1
ld bc, PARTYMON_STRUCT_LENGTH
call Function16a31
ld hl, wEggMon
ld bc, wEggMonEnd - wEggMon
call CopyBytes
call GetBaseData
ld a, [PartyCount]
dec a
ld hl, PartyMon1
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld b, h
ld c, l
ld hl, MON_ID + 1
add hl, bc
push hl
ld hl, MON_MAXHP
add hl, bc
ld d, h
ld e, l
pop hl
push bc
ld b, $0
predef CalcPkmnStats
pop bc
ld hl, MON_HP
add hl, bc
xor a
ld [hli], a
ld [hl], a
and a
ret
.asm_16a2f
scf
ret
; 16a31
Function16a31: ; 16a31
ld a, [PartyCount]
dec a
call AddNTimes
ld d, h
ld e, l
ret
; 16a3b
Function16a3b: ; 16a3b
ld a, [wDaycareLady]
bit 0, a
ret z
ld a, [wDaycareMan]
bit 0, a
ret z
callab Function16e1d
ld a, [wd265]
and a
ret z
inc a
ret z
ld hl, wDaycareMan
set 5, [hl]
.asm_16a59
call Random
cp 150
jr c, .asm_16a59
ld [wStepsToEgg], a
jp Function16a66
; 16a66
Function16a66: ; 16a66
xor a
ld hl, wEggMon
ld bc, wEggMonEnd - wEggMon
call ByteFill
ld hl, wEggNick
ld bc, PKMN_NAME_LENGTH
call ByteFill
ld hl, wEggOT
ld bc, NAME_LENGTH
call ByteFill
ld a, [wBreedMon1DVs]
ld [TempMonDVs], a
ld a, [wBreedMon1DVs + 1]
ld [TempMonDVs + 1], a
ld a, [wBreedMon1Species]
ld [CurPartySpecies], a
ld a, $3
ld [MonType], a
ld a, [wBreedMon1Species]
cp DITTO
ld a, $1
jr z, .asm_16ab6
ld a, [wBreedMon2Species]
cp DITTO
ld a, $0
jr z, .asm_16ab6
callba GetGender
ld a, $0
jr z, .asm_16ab6
inc a
.asm_16ab6
ld [wDittoInDaycare], a
and a
ld a, [wBreedMon1Species]
jr z, .asm_16ac2
ld a, [wBreedMon2Species]
.asm_16ac2
ld [CurPartySpecies], a
callab GetPreEvolution
callab GetPreEvolution
ld a, EGG_LEVEL
ld [CurPartyLevel], a
ld a, [CurPartySpecies]
cp NIDORAN_F
jr nz, .asm_16ae8
call Random
cp $80
ld a, NIDORAN_F
jr c, .asm_16ae8
ld a, NIDORAN_M
.asm_16ae8
ld [CurPartySpecies], a
ld [CurSpecies], a
ld [wEggMonSpecies], a
call GetBaseData
ld hl, wEggNick
ld de, String_16be0
call CopyName2
ld hl, PlayerName
ld de, wEggOT
ld bc, NAME_LENGTH
call CopyBytes
xor a
ld [wEggMonItem], a
ld de, wEggMonMoves
xor a
ld [Buffer1], a
predef FillMoves
callba Function170bf
ld hl, wEggMonID
ld a, [PlayerID]
ld [hli], a
ld a, [PlayerID + 1]
ld [hl], a
ld a, [CurPartyLevel]
ld d, a
callab CalcExpAtLevel
ld hl, wEggMonExp
ld a, [hMultiplicand]
ld [hli], a
ld a, [$ffb5]
ld [hli], a
ld a, [$ffb6]
ld [hl], a
xor a
ld b, $a
ld hl, wEggMonStatExp
.asm_16b46
ld [hli], a
dec b
jr nz, .asm_16b46
ld hl, wEggMonDVs
call Random
ld [hli], a
ld [TempMonDVs], a
call Random
ld [hld], a
ld [TempMonDVs + 1], a
ld de, wBreedMon1DVs
ld a, [wBreedMon1Species]
cp DITTO
jr z, .asm_16b98
ld de, wBreedMon2DVs
ld a, [wBreedMon2Species]
cp DITTO
jr z, .asm_16b98
ld a, $3
ld [MonType], a
push hl
callba GetGender
pop hl
ld de, wBreedMon1DVs
ld bc, wBreedMon2DVs
jr c, .asm_16bab
jr z, .asm_16b90
ld a, [wDittoInDaycare]
and a
jr z, .asm_16b98
ld d, b
ld e, c
jr .asm_16b98
.asm_16b90
ld a, [wDittoInDaycare]
and a
jr nz, .asm_16b98
ld d, b
ld e, c
.asm_16b98
ld a, [de]
inc de
and $f
ld b, a
ld a, [hl]
and $f0
add b
ld [hli], a
ld a, [de]
and $7
ld b, a
ld a, [hl]
and $f8
add b
ld [hl], a
.asm_16bab
ld hl, StringBuffer1
ld de, wd050
ld bc, NAME_LENGTH
call CopyBytes
ld hl, wEggMonMoves
ld de, wEggMonPP
predef FillPP
ld hl, wd050
ld de, StringBuffer1
ld bc, NAME_LENGTH
call CopyBytes
ld a, [BaseEggSteps]
ld hl, wEggMonHappiness
ld [hli], a
xor a
rept 2
ld [hli], a
endr
ld [hl], a
ld a, [CurPartyLevel]
ld [wEggMonLevel], a
ret
; 16be0
String_16be0: ; 16be0
db "EGG@"
; 16be4

312
event/field_moves.asm Executable file
View File

@ -0,0 +1,312 @@
PlayWhirlpoolSound: ; 8c7d4
call WaitSFX
ld de, SFX_SURF
call PlaySFX
call WaitSFX
ret
; 8c7e1
BlindingFlash: ; 8c7e1
callba FadeOutPalettes
ld hl, StatusFlags
set 2, [hl]
callba Function8c0e5
callba Function8c001
ld b, SCGB_09
call GetSGBLayout
callba Function49409
callba FadeInPalettes
ret
; 8c80a
ShakeHeadbuttTree: ; 8c80a
callba Function8cf53
ld de, CutGrassGFX
ld hl, VTiles1
lb bc, BANK(CutGrassGFX), 4
call Request2bpp
ld de, HeadbuttTreeGFX
ld hl, VTiles1 tile $04
lb bc, BANK(HeadbuttTreeGFX), 8
call Request2bpp
call Function8cad3
ld a, SPRITE_ANIM_INDEX_1B
call _InitSpriteAnimStruct
ld hl, $3
add hl, bc
ld [hl], $84
ld a, $90
ld [wc3b5], a
callba Function8cf7a
call GetHeadbuttTreeRelativeLocation
ld a, $20
ld [wcf64], a
call WaitSFX
ld de, SFX_SANDSTORM
call PlaySFX
.loop
ld hl, wcf64
ld a, [hl]
and a
jr z, .done
dec [hl]
ld a, $90
ld [wc3b5], a
callba Function8cf7a
call DelayFrame
jr .loop
.done
call OverworldTextModeSwitch
call WaitBGMap
xor a
ld [hBGMapMode], a
callba Function8cf53
ld hl, Sprites + $90
ld bc, $10
xor a
call ByteFill
ld de, Font
ld hl, VTiles1
lb bc, BANK(Font), $c
call Get1bpp
call ReplaceKrisSprite
ret
; 8c893
HeadbuttTreeGFX: ; 8c893
INCBIN "gfx/unknown/08c893.2bpp"
; 8c913
GetHeadbuttTreeRelativeLocation: ; 8c913
xor a
ld [hBGMapMode], a
ld a, [PlayerDirection]
and %00001100
srl a
ld e, a
ld d, 0
ld hl, TreeRelativeLocationTable
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld a, $5
ld [hli], a
ld [hld], a
ld bc, SCREEN_WIDTH
add hl, bc
ld [hli], a
ld [hld], a
call WaitBGMap
xor a
ld [hBGMapMode], a
ret
; 8c938
TreeRelativeLocationTable: ; 8c938
dwcoord 8, 8 + 2 ; RIGHT
dwcoord 8, 8 - 2 ; LEFT
dwcoord 8 - 2, 8 ; DOWN
dwcoord 8 + 2, 8 ; UP
; 8c940
OWCutAnimation: ; 8c940
ld a, e
and $1
ld [wJumptableIndex], a
call .LoadCutGFX
call WaitSFX
ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
call PlaySFX
.loop
ld a, [wJumptableIndex]
bit 7, a
jr nz, .finish
ld a, $90
ld [wc3b5], a
callab Function8cf7a
call OWCutJumptable
call DelayFrame
jr .loop
.finish
ret
; 8c96d
.LoadCutGFX: ; 8c96d
callab Function8cf53 ; pointless to farcall
ld de, CutGrassGFX
ld hl, VTiles1
lb bc, BANK(CutGrassGFX), 4
call Request2bpp
ld de, CutTreeGFX
ld hl, VTiles1 tile $4
lb bc, BANK(CutTreeGFX), 4
call Request2bpp
ret
; 8c98c
CutTreeGFX: ; c898c
INCBIN "gfx/misc/cut_tree.2bpp"
; c89cc
CutGrassGFX: ; 8c9cc
INCBIN "gfx/misc/cut_grass.2bpp"
; 8ca0c
OWCutJumptable: ; 8ca0c
ld a, [wJumptableIndex]
ld e, a
ld d, 0
ld hl, .jumptable
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 8ca1b
.jumptable: ; 8ca1b (23:4a1b)
dw Function8ca23
dw Function8ca3c
dw Function8ca5c
dw Function8ca64
Function8ca23: ; 8ca23 (23:4a23)
call Function8cad3
ld a, SPRITE_ANIM_INDEX_17 ; leaf
call _InitSpriteAnimStruct
ld hl, $3
add hl, bc
ld [hl], $84
ld a, $20
ld [wcf64], a
ld hl, wJumptableIndex
rept 2
inc [hl]
endr
ret
Function8ca3c: ; 8ca3c (23:4a3c)
call Function8ca8e
xor a
call Function8ca73
ld a, $10
call Function8ca73
ld a, $20
call Function8ca73
ld a, $30
call Function8ca73
ld a, $20
ld [wcf64], a
ld hl, wJumptableIndex
inc [hl]
ret
Function8ca5c: ; 8ca5c (23:4a5c)
ld a, $1
ld [hBGMapMode], a
ld hl, wJumptableIndex
inc [hl]
Function8ca64: ; 8ca64 (23:4a64)
ld hl, wcf64
ld a, [hl]
and a
jr z, .asm_8ca6d
dec [hl]
ret
.asm_8ca6d
ld hl, wJumptableIndex
set 7, [hl]
ret
Function8ca73: ; 8ca73 (23:4a73)
push de
push af
ld a, SPRITE_ANIM_INDEX_16 ; fly takeoff
call _InitSpriteAnimStruct
ld hl, $3
add hl, bc
ld [hl], $80
ld hl, $e
add hl, bc
ld [hl], $4
pop af
ld hl, $c
add hl, bc
ld [hl], a
pop de
ret
Function8ca8e: ; 8ca8e (23:4a8e)
ld de, 0
ld a, [wd197]
bit 0, a
jr z, .asm_8ca9a
set 0, e
.asm_8ca9a
ld a, [wd196]
bit 0, a
jr z, .asm_8caa3
set 1, e
.asm_8caa3
ld a, [PlayerDirection]
and $c
add e
ld e, a
ld hl, Unknown_8cab3
rept 2
add hl, de
endr
ld e, [hl]
inc hl
ld d, [hl]
ret
; 8cab3 (23:4ab3)
Unknown_8cab3: ; 8cab3
db $58, $60
db $48, $60
db $58, $70
db $48, $70
db $58, $40
db $48, $40
db $58, $50
db $48, $50
db $38, $60
db $48, $60
db $38, $50
db $48, $50
db $58, $60
db $68, $60
db $58, $50
db $68, $50
; 8cad3
Function8cad3: ; 8cad3 (23:4ad3)
ld a, [PlayerDirection]
and $c
srl a
ld e, a
ld d, 0
ld hl, Unknown_8cae5
add hl, de
ld e, [hl]
inc hl
ld d, [hl]
ret
; 8cae5 (23:4ae5)
Unknown_8cae5: ; 8cae5
db $50, $68
db $50, $48
db $40, $58
db $60, $58
; 8caed

485
event/magnet_train.asm Executable file
View File

@ -0,0 +1,485 @@
Special_MagnetTrain: ; 8cc04
ld a, [ScriptVar]
and a
jr nz, .ToGoldenrod
ld a, 1 ; forwards
lb bc, $40, $60
ld de, $fca0
jr .continue
.ToGoldenrod
ld a, -1 ; backwards
lb bc, $c0, $a0
ld de, $b460
.continue
ld h, a
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld a, h
ld [w5_d191], a
ld a, c
ld [w5_d192], a
ld a, b
ld [w5_d193], a
ld a, e
ld [w5_d194], a
ld a, d
ld [w5_d195], a
ld a, [hSCX]
push af
ld a, [hSCY]
push af
call Function8ccc9
ld hl, hVBlank
ld a, [hl]
push af
ld [hl], $1
.loop
ld a, [wJumptableIndex]
and a
jr z, .initialize
bit 7, a
jr nz, .done
callab Function8cf69
call Function8cdf7
call Function8cc99
call Function3b0c
call DelayFrame
jr .loop
.initialize
call Function8ceae
jr .loop
.done
pop af
ld [hVBlank], a
call ClearBGPalettes
xor a
ld [hLCDStatCustom], a
ld [hLCDStatCustom + 1], a
ld [hLCDStatCustom + 2], a
ld [hSCX], a
ld [Requested2bppSource], a
ld [Requested2bppSource + 1], a
ld [Requested2bppDest], a
ld [Requested2bppDest + 1], a
ld [Requested2bpp], a
call ClearTileMap
pop af
ld [hSCY], a
pop af
ld [hSCX], a
xor a
ld [hBGMapMode], a
pop af
ld [rSVBK], a
ret
; 8cc99
Function8cc99: ; 8cc99
ld hl, LYOverridesBackup
ld c, $2f
ld a, [wcf64]
add a
ld [hSCX], a
call Function8ccc4
ld c, $30
ld a, [wcf65]
call Function8ccc4
ld c, $31
ld a, [wcf64]
add a
call Function8ccc4
ld a, [wd191]
ld d, a
ld hl, wcf64
ld a, [hl]
rept 2
add d
endr
ld [hl], a
ret
; 8ccc4
Function8ccc4: ; 8ccc4
.asm_8ccc4
ld [hli], a
dec c
jr nz, .asm_8ccc4
ret
; 8ccc9
Function8ccc9: ; 8ccc9
call ClearBGPalettes
call ClearSprites
call DisableLCD
callab Function8cf53
call SetMagnetTrainPals
call DrawMagnetTrain
ld a, $90
ld [hWY], a
call EnableLCD
xor a
ld [hBGMapMode], a
ld [hSCX], a
ld [hSCY], a
ld a, [rSVBK]
push af
ld a, $1
ld [rSVBK], a
callba GetPlayerIcon
pop af
ld [rSVBK], a
ld hl, VTiles0
ld c, $4
call Request2bpp
ld hl, $c0
add hl, de
ld d, h
ld e, l
ld hl, VTiles0 tile $04
ld c, $4
call Request2bpp
call Function8cda6
ld hl, wJumptableIndex
xor a
ld [hli], a
ld a, [wd192]
rept 3
ld [hli], a
endr
ld de, MUSIC_MAGNET_TRAIN
call PlayMusic2
ret
; 8cd27
DrawMagnetTrain: ; 8cd27
ld hl, VBGMap0
xor a
.asm_8cd2b
call GetMagnetTrainBGTiles
ld b, 32 / 2
call .FillAlt
inc a
cp $12
jr c, .asm_8cd2b
ld hl, VBGMap0 tile $0c
ld de, MagnetTrainTilemap1
ld c, 20
call .FillLine
ld hl, VBGMap0 tile $0e
ld de, MagnetTrainTilemap2
ld c, 20
call .FillLine
ld hl, VBGMap0 tile $10
ld de, MagnetTrainTilemap3
ld c, 20
call .FillLine
ld hl, VBGMap0 tile $12
ld de, MagnetTrainTilemap4
ld c, 20
call .FillLine
ret
; 8cd65
.FillLine ; 8cd65
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .FillLine
ret
; 8cd6c
.FillAlt ; 8cd6c
ld [hl], e
inc hl
ld [hl], d
inc hl
dec b
jr nz, .FillAlt
ret
; 8cd74
GetMagnetTrainBGTiles: ; 8cd74
push hl
ld e, a
ld d, 0
ld hl, MagnetTrainBGTiles
rept 2
add hl, de
endr
ld e, [hl]
inc hl
ld d, [hl]
pop hl
ret
; 8cd82
MagnetTrainBGTiles: ; 8cd82
; Alternating tiles for each line
; of the Magnet Train tilemap.
db $4c, $4d ; bush
db $5c, $5d ; bush
db $4c, $4d ; bush
db $5c, $5d ; bush
db $08, $08 ; fence
db $18, $18 ; fence
db $1f, $1f ; track
db $31, $31 ; track
db $11, $11 ; track
db $11, $11 ; track
db $0d, $0d ; track
db $31, $31 ; track
db $04, $04 ; fence
db $18, $18 ; fence
db $4c, $4d ; bush
db $5c, $5d ; bush
db $4c, $4d ; bush
db $5c, $5d ; bush
; 8cda6
Function8cda6: ; 8cda6
ld hl, LYOverrides
ld bc, $90
ld a, [wd192]
call ByteFill
ld hl, LYOverridesBackup
ld bc, $90
ld a, [wd192]
call ByteFill
ld a, $43
ld [hLCDStatCustom], a
ret
; 8cdc3
SetMagnetTrainPals: ; 8cdc3
ld a, $1
ld [rVBK], a
; bushes
ld hl, VBGMap0
ld bc, 8 tiles
ld a, $2
call ByteFill
; train
ld hl, VBGMap0 tile $08
ld bc, 20 tiles
xor a
call ByteFill
; more bushes
ld hl, VBGMap0 tile $1c
ld bc, 8 tiles
ld a, $2
call ByteFill
; train window
ld hl, VBGMap0 tile $10 + 7
ld bc, 6
ld a, $4
call ByteFill
ld a, $0
ld [rVBK], a
ret
; 8cdf7
Function8cdf7: ; 8cdf7
ld a, [wJumptableIndex]
ld e, a
ld d, 0
ld hl, Jumptable_8ce06
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 8ce06
Jumptable_8ce06: ; 8ce06
dw Function8ce19
dw Function8ce6d
dw Function8ce47
dw Function8ce6d
dw Function8ce7a
dw Function8ce6d
dw Function8cea2
; 8ce14
Function8ce14: ; 8ce14
ld hl, wJumptableIndex
inc [hl]
ret
; 8ce19
Function8ce19: ; 8ce19
ld d, $55
ld a, [wd194 + 1]
ld e, a
ld b, SPRITE_ANIM_INDEX_15
ld a, [rSVBK]
push af
ld a, $1
ld [rSVBK], a
ld a, [PlayerGender]
bit 0, a
jr z, .asm_8ce31
ld b, SPRITE_ANIM_INDEX_1F
.asm_8ce31
pop af
ld [rSVBK], a
ld a, b
call _InitSpriteAnimStruct
ld hl, $3
add hl, bc
ld [hl], $0
call Function8ce14
ld a, $80
ld [wcf66], a
ret
; 8ce47
Function8ce47: ; 8ce47
ld hl, wd193
ld a, [wcf65]
cp [hl]
jr z, .asm_8ce64
ld e, a
ld a, [wd191]
xor $ff
inc a
add e
ld [wcf65], a
ld hl, wc3c0
ld a, [wd191]
add [hl]
ld [hl], a
ret
.asm_8ce64
call Function8ce14
ld a, $80
ld [wcf66], a
ret
; 8ce6d
Function8ce6d: ; 8ce6d
ld hl, wcf66
ld a, [hl]
and a
jr z, .asm_8ce76
dec [hl]
ret
.asm_8ce76
call Function8ce14
ret
; 8ce7a
Function8ce7a: ; 8ce7a
ld hl, wd194
ld a, [wcf65]
cp [hl]
jr z, .asm_8ce9e
ld e, a
ld a, [wd191]
xor $ff
inc a
ld d, a
ld a, e
rept 2
add d
endr
ld [wcf65], a
ld hl, wc3c0
ld a, [wd191]
ld d, a
ld a, [hl]
rept 2
add d
endr
ld [hl], a
ret
ret
.asm_8ce9e
call Function8ce14
ret
; 8cea2
Function8cea2: ; 8cea2
ld a, $80
ld [wJumptableIndex], a
ld de, SFX_TRAIN_ARRIVED
call PlaySFX
ret
; 8ceae
Function8ceae: ; 8ceae
callba Function8cf69
call Function8cdf7
call Function8cc99
call Function3b0c
call DelayFrame
ld a, [rSVBK]
push af
ld a, $1
ld [rSVBK], a
ld a, [TimeOfDayPal]
push af
ld a, [wPermission]
push af
ld a, [TimeOfDay]
and $3
ld [TimeOfDayPal], a
ld a, $1
ld [wPermission], a
ld b, SCGB_09
call GetSGBLayout
call UpdateTimePals
ld a, [rBGP]
ld [wcfc7], a
ld a, [rOBP0]
ld [wcfc8], a
ld a, [rOBP1]
ld [wcfc9], a
pop af
ld [wPermission], a
pop af
ld [TimeOfDayPal], a
pop af
ld [rSVBK], a
ret
; 8ceff
MagnetTrainTilemap1:
db $1f, $05, $06, $0a, $0a
db $0a, $09, $0a, $0a, $0a
db $0a, $0a, $0a, $09, $0a
db $0a, $0a, $0b, $0c, $1f
MagnetTrainTilemap2:
db $14, $15, $16, $1a, $1a
db $1a, $19, $1a, $1a, $1a
db $1a, $1a, $1a, $19, $1a
db $1a, $1a, $1b, $1c, $1d
MagnetTrainTilemap3:
db $24, $25, $26, $27, $07
db $2f, $29, $28, $28, $28
db $28, $28, $28, $29, $07
db $2f, $2a, $2b, $2c, $2d
MagnetTrainTilemap4:
db $20, $1f, $2e, $1f, $17
db $00, $2e, $1f, $1f, $1f
db $1f, $1f, $1f, $2e, $17
db $00, $1f, $2e, $1f, $0f
; 8cf4f

View File

@ -227,7 +227,7 @@ Function1e35:: ; 1e35
ret ret
; 1e5d ; 1e5d
Function1e5d:: ; 1e5d DoNthMenu:: ; 1e5d
call MenuFunc_1e7f call MenuFunc_1e7f
call MenuWriteText call MenuWriteText
call Function1eff call Function1eff
@ -438,7 +438,7 @@ Function1f79:: ; 1f79
ret ret
; 1f8d ; 1f8d
Function1f8d:: ; 1f8d PlaceNthMenuStrings:: ; 1f8d
push de push de
ld a, [MenuSelection] ld a, [MenuSelection]
call Function1fb1 call Function1fb1
@ -464,7 +464,7 @@ endr
ret ret
; 1fa7 ; 1fa7
Function1fa7:: ; 1fa7 MenuJumptable:: ; 1fa7
ld a, [MenuSelection] ld a, [MenuSelection]
call Function1fb1 call Function1fb1
ld a, [hli] ld a, [hli]

3360
main.asm

File diff suppressed because it is too large Load Diff

View File

@ -2402,7 +2402,7 @@ RegisteredItem:: ; d95c
PlayerState:: ; d95d PlayerState:: ; d95d
ds 1 ds 1
wd95e:: ds 2 wHallOfFameCount:: ds 2
wd960:: ds 2 wd960:: ds 2
MooMooBerries:: ; d962 MooMooBerries:: ; d962
ds 1 ; how many berries fed to MooMoo ds 1 ; how many berries fed to MooMoo