main.asm is now under 30k lines

This commit is contained in:
PikalaxALT
2015-11-19 18:07:20 -05:00
parent 8a6a1a7d77
commit 93a129eb6d
26 changed files with 9947 additions and 9950 deletions

2531
engine/crystal_intro.asm Executable file

File diff suppressed because it is too large Load Diff

1517
engine/debug.asm Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,90 @@
EngineFlagAction:: ; 80430
; Do action b on engine flag de
;
; b = 0: reset flag
; = 1: set flag
; > 1: check flag, result in c
;
; Setting/resetting does not return a result.
; 16-bit flag ids are considered invalid, but it's nice
; to know that the infrastructure is there.
ld a, d
cp 0
jr z, .ceiling
jr c, .read ; cp 0 can't set carry!
jr .invalid
; There are only $a2 engine flags, so
; anything beyond that is invalid too.
.ceiling
ld a, e
cp NUM_ENGINE_FLAGS
jr c, .read
; Invalid flags are treated as flag 00.
.invalid
xor a
ld e, a
ld d, a
; Get this flag's location.
.read
ld hl, EngineFlags
; location
rept 2
add hl, de
endr
; bit
add hl, de
; location
ld e, [hl]
inc hl
ld d, [hl]
inc hl
; bit
ld c, [hl]
; What are we doing with this flag?
ld a, b
cp 1
jr c, .reset ; b = 0
jr z, .set ; b = 1
; Return the given flag in c.
.check
ld a, [de]
and c
ld c, a
ret
; Set the given flag.
.set
ld a, [de]
or c
ld [de], a
ret
; Reset the given flag.
.reset
ld a, c
cpl ; AND all bits except the one in question
ld c, a
ld a, [de]
and c
ld [de], a
ret
; 80462
EngineFlags: ; 80462
; All locations are in WRAM bank 1.
engine_flag: MACRO
dwb \1, 1 << \2

620
engine/npctrade.asm Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -41,7 +41,7 @@ Function5003f: ; 5003f
LoadPartyMenuGFX: ; 5004f
call LoadFontsBattleExtra
callab Function8ad1 ; engine/color.asm
callab InefficientlyClear121BytesAtwc300
callab ClearSpriteAnims
ret
; 5005f

1493
engine/printer.asm Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -2985,8 +2985,8 @@ Script_reloadmappart:: ; 97ae3
xor a
ld [hBGMapMode], a
call OverworldTextModeSwitch
call Function2914
callba Function104061
call GetMovementPermissions
callba ReloadMapPart
call UpdateSprites
ret
; 97af6

File diff suppressed because it is too large Load Diff

View File

@@ -1761,7 +1761,7 @@ SetUpMoveScreenBG: ; 13172
xor a
ld [hBGMapMode], a
callba Functionfb571
callba InefficientlyClear121BytesAtwc300
callba ClearSpriteAnims
ld a, [CurPartyMon]
ld e, a
ld d, $0

File diff suppressed because it is too large Load Diff

150
engine/variables.asm Executable file
View File

@@ -0,0 +1,150 @@
_GetVarAction:: ; 80648 (20:4648)
ld a, c
cp NUM_VARS
jr c, .valid
xor a
.valid
ld c, a
ld b, 0
ld hl, .VarActionTable
rept 3
add hl, bc
endr
ld e, [hl]
inc hl
ld d, [hl]
inc hl
ld b, [hl]
ld a, b
and RETVAR_EXECUTE
jr nz, .call
ld a, b
and RETVAR_ADDR_DE
ret nz
ld a, [de]
jr .loadstringbuffer2
.call
call _de_
ret
.loadstringbuffer2: ; 8066c (20:466c)
ld de, StringBuffer2
ld [de], a
ret
; 80671 (20:4671)
.VarActionTable: ; 80671
; $00: copy [de] to StringBuffer2
; $40: return address in de
; $80: call function
dwb StringBuffer2, RETVAR_STRBUF2
dwb PartyCount, RETVAR_STRBUF2
dwb .BattleResult, RETVAR_EXECUTE
dwb BattleType, RETVAR_ADDR_DE
dwb TimeOfDay, RETVAR_STRBUF2
dwb .CountCaughtMons, RETVAR_EXECUTE
dwb .CountSeenMons, RETVAR_EXECUTE
dwb .CountBadges, RETVAR_EXECUTE
dwb PlayerState, RETVAR_ADDR_DE
dwb .PlayerFacing, RETVAR_EXECUTE
dwb hHours, RETVAR_STRBUF2
dwb .DayOfWeek, RETVAR_EXECUTE
dwb MapGroup, RETVAR_STRBUF2
dwb MapNumber, RETVAR_STRBUF2
dwb .UnownCaught, RETVAR_EXECUTE
dwb wPermission, RETVAR_STRBUF2
dwb .BoxFreeSpace, RETVAR_EXECUTE
dwb wBugContestMinsRemaining, RETVAR_STRBUF2
dwb XCoord, RETVAR_STRBUF2
dwb YCoord, RETVAR_STRBUF2
dwb wSpecialPhoneCallID, RETVAR_STRBUF2
dwb wcf64, RETVAR_STRBUF2
dwb wKurtApricornQuantity, RETVAR_STRBUF2
dwb wCurrentCaller, RETVAR_ADDR_DE
dwb wBlueCardBalance, RETVAR_ADDR_DE
dwb wBuenasPassword, RETVAR_ADDR_DE
dwb wdc58, RETVAR_STRBUF2
dwb NULL, RETVAR_STRBUF2
; 806c5
.CountCaughtMons: ; 806c5
; Caught mons.
ld hl, PokedexCaught
ld b, EndPokedexCaught - PokedexCaught
call CountSetBits
ld a, [wd265]
jp .loadstringbuffer2
; 806d3
.CountSeenMons: ; 806d3
; Seen mons.
ld hl, PokedexSeen
ld b, EndPokedexSeen - PokedexSeen
call CountSetBits
ld a, [wd265]
jp .loadstringbuffer2
; 806e1
.CountBadges: ; 806e1
; Number of owned badges.
ld hl, Badges
ld b, 2
call CountSetBits
ld a, [wd265]
jp .loadstringbuffer2
; 806ef
.PlayerFacing: ; 806ef
; The direction the player is facing.
ld a, [PlayerDirection]
and $c
rrca
rrca
jp .loadstringbuffer2
; 806f9
.DayOfWeek: ; 806f9
; The day of the week.
call GetWeekday
jp .loadstringbuffer2
; 806ff
.UnownCaught: ; 806ff
; Number of unique Unown caught.
call .count
ld a, b
jp .loadstringbuffer2
.count
ld hl, UnownDex
ld b, 0
.loop
ld a, [hli]
and a
ret z
inc b
ld a, b
cp 26
jr c, .loop
ret
; 80715
.BoxFreeSpace: ; 80715
; Remaining slots in the current box.
ld a, BANK(sBoxCount)
call GetSRAMBank
ld hl, sBoxCount
ld a, MONS_PER_BOX
sub [hl]
ld b, a
call CloseSRAM
ld a, b
jp .loadstringbuffer2
; 80728
.BattleResult: ; 80728
ld a, [wBattleResult]
and $3f
jp .loadstringbuffer2
; 80730

628
event/halloffame.asm Executable file

File diff suppressed because it is too large Load Diff

285
event/mom_phone.asm Executable file
View File

@@ -0,0 +1,285 @@
MomTriesToBuySomething:: ; fcfec
ld a, [wMapReentryScriptQueueFlag]
and a
ret nz
call GetMapHeaderPhoneServiceNybble
and a
ret nz
xor a
ld [wdc18], a
call CheckBalance_MomItem2
ret nc
call Functionfd0c3
ret nc
ld b, BANK(UnknownScript_0xfd00f)
ld de, UnknownScript_0xfd00f
callba LoadScriptBDE
scf
ret
; fd00f
UnknownScript_0xfd00f: ; 0xfd00f
callasm Functionfd017
farjump Script_ReceivePhoneCall
; 0xfd017
Functionfd017: ; fd017
call MomBuysItem_DeductFunds
call Functionfd0eb
ld a, [wdc18]
and a
jr nz, .ok
ld hl, wdc17
inc [hl]
.ok
ld a, 1
ld [wCurrentCaller], a
ld bc, wd03f
ld hl, 0
add hl, bc
ld [hl], 0
inc hl
ld [hl], 1
ld hl, 9
add hl, bc
ld a, $3f
ld [hli], a
ld a, e
ld [hli], a
ld a, d
ld [hl], a
ret
; fd044
CheckBalance_MomItem2: ; fd044
ld a, [wdc17]
cp 10
jr nc, .nope
call GetItemFromMom
ld a, [hli]
ld [hMoneyTemp], a
ld a, [hli]
ld [hMoneyTemp + 1], a
ld a, [hli]
ld [hMoneyTemp + 2], a
ld de, wMomsMoney
ld bc, hMoneyTemp
callba CompareMoney
jr nc, .have_enough_money
.nope
jr .check_have_2300
.have_enough_money
scf
ret
.check_have_2300
ld hl, hMoneyTemp
ld [hl], (2300 / $10000) ; $00
inc hl
ld [hl], ((2300 % $10000) / $100) ; $08
inc hl
ld [hl], (2300 % $100) ; $fc
.loop
ld de, wdc19
ld bc, wMomsMoney
callba CompareMoney
jr z, .exact
jr nc, .less_than
call Functionfd099
jr .loop
.less_than
xor a
ret
.exact
call Functionfd099
ld a, 5
call RandomRange
inc a
ld [wdc18], a
scf
ret
; fd099
Functionfd099: ; fd099
ld de, wdc19
ld bc, hMoneyTemp
callba AddMoney
ret
; fd0a6
MomBuysItem_DeductFunds: ; fd0a6 (3f:50a6)
call GetItemFromMom
ld de, 3
add hl, de
ld a, [hli]
ld [hMoneyTemp], a
ld a, [hli]
ld [hMoneyTemp + 1], a
ld a, [hli]
ld [hMoneyTemp + 2], a
ld de, wMomsMoney
ld bc, hMoneyTemp
callba TakeMoney
ret
Functionfd0c3: ; fd0c3
call GetItemFromMom
ld de, 6
add hl, de
ld a, [hli]
cp 1
jr z, .not_doll
ld a, [hl]
ld c, a
ld b, 1
callba DecorationFlagAction_c
scf
ret
.not_doll
ld a, [hl]
ld [CurItem], a
ld a, $1
ld [wItemQuantityChangeBuffer], a
ld hl, PCItems
call ReceiveItem
ret
; fd0eb
Functionfd0eb: ; fd0eb (3f:50eb)
call GetItemFromMom
ld de, 6 ; field
add hl, de
ld a, [hli]
ld de, Script_MomBoughtItem
cp 1
ret z
ld de, Script_MomBoughtDoll
ret
; fd0fd (3f:50fd)
Script_MomBoughtItem: ; 0xfd0fd
writetext _MomText_HiHowAreYou
writetext _MomText_FoundAnItem
writetext _MomText_BoughtWithYourMoney
writetext _MomText_ItsInPC
end
; 0xfd10a
Script_MomBoughtDoll: ; 0xfd10a
writetext _MomText_HiHowAreYou
writetext _MomText_FoundADoll
writetext _MomText_BoughtWithYourMoney
writetext _MomText_ItsInRoom
end
; 0xfd117
GetItemFromMom: ; fd117
ld a, [wdc18]
and a
jr z, .zero
dec a
ld de, MomItems_1
jr .incave
.zero
ld a, [wdc17]
cp 10 ; length of MomItems_2
jr c, .ok
xor a
.ok
ld de, MomItems_2
.incave
ld l, a
ld h, 0
rept 3 ; multiply hl by 8
add hl, hl
endr
add hl, de
ret
; fd136
momitem: macro
; money to trigger, cost, kind, item
dt \1
dt \2
db \3, \4
ENDM
MomItems_1: ; fd136
momitem 0, 600, MOM_ITEM, SUPER_POTION
momitem 0, 90, MOM_ITEM, ANTIDOTE
momitem 0, 180, MOM_ITEM, POKE_BALL
momitem 0, 450, MOM_ITEM, ESCAPE_ROPE
momitem 0, 500, MOM_ITEM, GREAT_BALL
; fd15e
MomItems_2: ; fd15e
momitem 900, 600, MOM_ITEM, SUPER_POTION
momitem 4000, 270, MOM_ITEM, REPEL
momitem 7000, 600, MOM_ITEM, SUPER_POTION
momitem 10000, 1800, MOM_DOLL, DECO_CHARMANDER_DOLL
momitem 15000, 3000, MOM_ITEM, MOON_STONE
momitem 19000, 600, MOM_ITEM, SUPER_POTION
momitem 30000, 4800, MOM_DOLL, DECO_CLEFAIRY_DOLL
momitem 40000, 900, MOM_ITEM, HYPER_POTION
momitem 50000, 8000, MOM_DOLL, DECO_PIKACHU_DOLL
momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
; fd1ae
db 0, 0, 0 ; XXX
_MomText_HiHowAreYou: ; 0xfd1b1
; Hi, ! How are you?
text_jump UnknownText_0x1bc615
db "@"
; 0xfd1b6
_MomText_FoundAnItem: ; 0xfd1b6
; I found a useful item shopping, so
text_jump UnknownText_0x1bc62a
db "@"
; 0xfd1bb
_MomText_BoughtWithYourMoney: ; 0xfd1bb
; I bought it with your money. Sorry!
text_jump UnknownText_0x1bc64e
db "@"
; 0xfd1c0
_MomText_ItsInPC: ; 0xfd1c0
; It's in your PC. You'll like it!
text_jump UnknownText_0x1bc673
db "@"
; 0xfd1c5
_MomText_FoundADoll: ; 0xfd1c5
; While shopping today, I saw this adorable doll, so
text_jump UnknownText_0x1bc693
db "@"
; 0xfd1ca
_MomText_ItsInRoom: ; 0xfd1ca
; It's in your room. You'll love it!
text_jump UnknownText_0x1bc6c7
db "@"
; 0xfd1cf
db 0 ; XXX
Functionfd1d0: ; fd1d0
ret
; fd1d1
ret ; XXX

236
gfx/font.asm Executable file
View File

@@ -0,0 +1,236 @@
FontExtra:
INCBIN "gfx/misc/font_extra.2bpp"
Font:
INCBIN "gfx/misc/font.1bpp"
FontBattleExtra:
INCBIN "gfx/misc/font_battle_extra.2bpp"
Frames: ; f8800
INCBIN "gfx/frames/1.1bpp"
INCBIN "gfx/frames/2.1bpp"
INCBIN "gfx/frames/3.1bpp"
INCBIN "gfx/frames/4.1bpp"
INCBIN "gfx/frames/5.1bpp"
INCBIN "gfx/frames/6.1bpp"
INCBIN "gfx/frames/7.1bpp"
INCBIN "gfx/frames/8.1bpp"
INCBIN "gfx/frames/9.1bpp"
; f89b0
; TODO: Various misc graphics here.
GFX_f89b0: ; f89b0
INCBIN "gfx/unknown/0f89b0.2bpp"
; f8a90
ShinyIcon: ; f8a90
INCBIN "gfx/stats/shiny.2bpp"
GFX_f8aa0: ; f8aa0
INCBIN "gfx/unknown/0f8aa0.2bpp"
; f8ac0
EnemyHPBarBorderGFX: ; f8ac0
INCBIN "gfx/battle/enemy_hp_bar_border.1bpp"
; f8ae0
HPExpBarBorderGFX: ; f8ae0
INCBIN "gfx/battle/hp_exp_bar_border.1bpp"
; f8b10
ExpBarGFX: ; f8b10
INCBIN "gfx/battle/expbar.2bpp"
; f8ba0
TownMapGFX: ; f8ba0
INCBIN "gfx/misc/town_map.2bpp.lz"
; f8ea4
GFX_f8ea4: ; unused
INCBIN "gfx/unknown/0f8ea4.2bpp"
; f8f24
OverworldPhoneIconGFX: ; f8f24
INCBIN "gfx/mobile/overworld_phone_icon.2bpp"
; f8f34
GFX_f8f34: ; unused
INCBIN "gfx/unknown/0f8f34.2bpp"
; f9204
TextBoxSpaceGFX: ; f9204
INCBIN "gfx/frames/space.2bpp"
; f9214
MobilePhoneTilesGFX: ; f9214
INCBIN "gfx/mobile/phone_tiles.2bpp"
; f9344
MapEntryFrameGFX: ; f9344
INCBIN "gfx/frames/map_entry_sign.2bpp"
; f9424
GFX_f9424: ; f9424
INCBIN "gfx/unknown/0f9424.2bpp"
; f9434
Footprints: ; f9434
INCBIN "gfx/misc/footprints.1bpp"
; fb434
; This and the following two functions are unreferenced.
Unknown_fb434:
db 0
Functionfb435: ; 4b435
ld a, [Unknown_fb434]
and a
jp nz, Get1bpp_2
jp Get1bpp
; fb43f
Functionfb43f: ; fb43f
ld a, [Unknown_fb434]
and a
jp nz, Get2bpp_2
jp Get2bpp
; End unreferenced block
; fb449
_LoadStandardFont:: ; fb449
ld de, Font
ld hl, VTiles1
lb bc, BANK(Font), $80
ld a, [rLCDC]
bit 7, a
jp z, Copy1bpp
ld de, Font
ld hl, VTiles1
lb bc, BANK(Font), $20
call Get1bpp_2
ld de, Font + $20 * LEN_1BPP_TILE
ld hl, VTiles1 tile $20
lb bc, BANK(Font), $20
call Get1bpp_2
ld de, Font + $40 * LEN_1BPP_TILE
ld hl, VTiles1 tile $40
lb bc, BANK(Font), $20
call Get1bpp_2
ld de, Font + $60 * LEN_1BPP_TILE
ld hl, VTiles1 tile $60
lb bc, BANK(Font), $20
call Get1bpp_2
ret
; fb48a
_LoadFontsExtra1:: ; fb48a
ld de, MobilePhoneTilesGFX
ld hl, VTiles2 tile $60
lb bc, BANK(MobilePhoneTilesGFX), 1
call Get1bpp_2
ld de, OverworldPhoneIconGFX
ld hl, VTiles2 tile $62
lb bc, BANK(OverworldPhoneIconGFX), 1
call Get2bpp_2
ld de, FontExtra + 3 * LEN_2BPP_TILE
ld hl, VTiles2 tile $63
lb bc, BANK(FontExtra), $16
call Get2bpp_2
jr LoadFrame
; fb4b0
_LoadFontsExtra2:: ; fb4b0
ld de, GFX_f9424
ld hl, VTiles2 tile $61
ld b, BANK(GFX_f9424)
ld c, 1
call Get2bpp_2
ret
; fb4be
_LoadFontsBattleExtra:: ; fb4be
ld de, FontBattleExtra
ld hl, VTiles2 tile $60
lb bc, BANK(FontBattleExtra), $19
call Get2bpp_2
jr LoadFrame
; fb4cc
LoadFrame: ; fb4cc
ld a, [TextBoxFrame]
and 7
ld bc, TILES_PER_FRAME * LEN_1BPP_TILE
ld hl, Frames
call AddNTimes
ld d, h
ld e, l
ld hl, VTiles2 tile $79
lb bc, BANK(Frames), TILES_PER_FRAME
call Get1bpp_2
ld hl, VTiles2 tile $7f
ld de, TextBoxSpaceGFX
lb bc, BANK(TextBoxSpaceGFX), 1
call Get1bpp_2
ret
; fb4f2
LoadBattleFontsHPBar: ; fb4f2
ld de, FontBattleExtra
ld hl, VTiles2 tile $60
lb bc, BANK(FontBattleExtra), $c
call Get2bpp_2
ld hl, VTiles2 tile $70
ld de, FontBattleExtra + $10 * LEN_2BPP_TILE
lb bc, BANK(FontBattleExtra), 3
call Get2bpp_2
call LoadFrame
LoadHPBar: ; fb50d
ld de, EnemyHPBarBorderGFX
ld hl, VTiles2 tile $6c
lb bc, BANK(EnemyHPBarBorderGFX), 4
call Get1bpp_2
ld de, HPExpBarBorderGFX
ld hl, VTiles2 tile $73
lb bc, BANK(HPExpBarBorderGFX), 6
call Get1bpp_2
ld de, ExpBarGFX
ld hl, VTiles2 tile $55
lb bc, BANK(ExpBarGFX), 9
call Get2bpp_2
ld de, MobilePhoneTilesGFX + 9 * LEN_2BPP_TILE
ld hl, VTiles2 tile $5e
lb bc, BANK(MobilePhoneTilesGFX), 2
call Get2bpp_2
ret
; fb53e
Functionfb53e: ; fb53e
call _LoadFontsBattleExtra
ld de, EnemyHPBarBorderGFX
ld hl, VTiles2 tile $6c
lb bc, BANK(EnemyHPBarBorderGFX), 4
call Get1bpp_2
ld de, HPExpBarBorderGFX
ld hl, VTiles2 tile $78
lb bc, BANK(HPExpBarBorderGFX), 1
call Get1bpp_2
ld de, HPExpBarBorderGFX + 3 * LEN_1BPP_TILE
ld hl, VTiles2 tile $76
lb bc, BANK(HPExpBarBorderGFX), 2
call Get1bpp_2
ld de, ExpBarGFX
ld hl, VTiles2 tile $55
lb bc, BANK(ExpBarGFX), 8
call Get2bpp_2
Functionfb571: ; fb571
ld de, GFX_f89b0
ld hl, VTiles2 tile $31
lb bc, BANK(GFX_f89b0), $11
call Get2bpp_2
ret
; fb57e

1088
gfx/mail.asm Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -1588,7 +1588,7 @@ Function28f7:: ; 28f7
ret
; 2914
Function2914:: ; 2914
GetMovementPermissions:: ; 2914
xor a
ld [TilePermissions], a
call GetLeftRightCollision

9893
main.asm

File diff suppressed because it is too large Load Diff

View File

@@ -385,7 +385,7 @@ Function11c1ca: ; 11c1ca
ld de, VTiles0
call Decompress
call EnableLCD
callba Function104061
callba ReloadMapPart
callba Function8cf53
callba LoadPokemonData
callba Function40c30
@@ -443,7 +443,7 @@ Function11c283: ; 11c283
jr nz, .asm_11c2a2
call Function11c2ac
callba Function8cf69
callba Function104061
callba ReloadMapPart
jr .asm_11c283
.asm_11c2a2
@@ -782,7 +782,7 @@ Function11c4be: ; 11c4be (47:44be)
hlcoord 0, 14, AttrMap
ld bc, $28
call ByteFill
callba Function104061
callba ReloadMapPart
ret
; 11c4db (47:44db)
@@ -978,7 +978,7 @@ Function11c618: ; 11c618 (47:4618)
hlcoord 0, 6, AttrMap
ld bc, $c8
call ByteFill
callba Function104061
callba ReloadMapPart
ret
; 11c62a (47:462a)
@@ -1585,7 +1585,7 @@ Function11c9ab: ; 11c9ab (47:49ab)
hlcoord 0, 6, AttrMap
ld bc, $c8
call ByteFill
callba Function104061
callba ReloadMapPart
ret
Function11c9bd: ; 11c9bd (47:49bd)
@@ -1672,7 +1672,7 @@ Function11ca19: ; 11ca19 (47:4a19)
add hl, de
dec c
jr nz, .asm_11ca22
callba Function104061
callba ReloadMapPart
ret
; 11ca38 (47:4a38)
@@ -2089,7 +2089,7 @@ Function11cdaa: ; 11cdaa (47:4daa)
hlcoord 0, 12, AttrMap
ld bc, $50
call ByteFill
callba Function104061
callba ReloadMapPart
ret
; 11cdc7 (47:4dc7)

View File

@@ -173,7 +173,7 @@ Function17a78f: ; 17a78f (5e:678f)
ret
.asm_17a79f
callba Function104061
callba ReloadMapPart
ret
; 17a7a6 (5e:67a6)

View File

@@ -93,7 +93,7 @@ Function8919e: ; 8919e (22:519e)
Function891ab: ; 891ab
call Function89240
callba Function104061
callba ReloadMapPart
call Function8923c
ret
; 891b8

Some files were not shown because too many files have changed in this diff Show More