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

File diff suppressed because it is too large Load Diff

771
engine/timeset.asm Executable file

File diff suppressed because it is too large Load Diff

View File

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

768
event/daycare.asm Executable file

File diff suppressed because it is too large Load Diff

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
; 1e5d
Function1e5d:: ; 1e5d
DoNthMenu:: ; 1e5d
call MenuFunc_1e7f
call MenuWriteText
call Function1eff
@ -438,7 +438,7 @@ Function1f79:: ; 1f79
ret
; 1f8d
Function1f8d:: ; 1f8d
PlaceNthMenuStrings:: ; 1f8d
push de
ld a, [MenuSelection]
call Function1fb1
@ -464,7 +464,7 @@ endr
ret
; 1fa7
Function1fa7:: ; 1fa7
MenuJumptable:: ; 1fa7
ld a, [MenuSelection]
call Function1fb1
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
ds 1
wd95e:: ds 2
wHallOfFameCount:: ds 2
wd960:: ds 2
MooMooBerries:: ; d962
ds 1 ; how many berries fed to MooMoo