summaryrefslogtreecommitdiff
path: root/engine/overworld/variables.asm
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2018-04-04 23:56:40 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2018-04-04 23:56:40 -0400
commit81306889e33c599f8015bc4e653929bb7de00967 (patch)
tree7a812968ba565a13ef400cdcb5230e6e8185a1ec /engine/overworld/variables.asm
parent145efc13535fbc9d8ab2786d29209d97aebf0481 (diff)
parentf750d4f4185529cfb440ac7825d202ebcf160766 (diff)
Merge branch 'master' of https://github.com/pret/pokecrystal
Diffstat (limited to 'engine/overworld/variables.asm')
-rw-r--r--engine/overworld/variables.asm151
1 files changed, 151 insertions, 0 deletions
diff --git a/engine/overworld/variables.asm b/engine/overworld/variables.asm
new file mode 100644
index 000000000..89026fdba
--- /dev/null
+++ b/engine/overworld/variables.asm
@@ -0,0 +1,151 @@
+_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
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ 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, wStringBuffer2
+ ld [de], a
+ ret
+; 80671 (20:4671)
+
+.VarActionTable: ; 80671
+; entries correspond to VAR_* constants
+ ; RETVAR_STRBUF2: copy [de] to wStringBuffer2
+ ; RETVAR_ADDR_DE: return address in de
+ ; RETVAR_EXECUTE: call function
+ dwb wStringBuffer2, RETVAR_STRBUF2
+ dwb wPartyCount, RETVAR_STRBUF2
+ dwb .BattleResult, RETVAR_EXECUTE
+ dwb wBattleType, RETVAR_ADDR_DE
+ dwb wTimeOfDay, RETVAR_STRBUF2
+ dwb .CountCaughtMons, RETVAR_EXECUTE
+ dwb .CountSeenMons, RETVAR_EXECUTE
+ dwb .CountBadges, RETVAR_EXECUTE
+ dwb wPlayerState, RETVAR_ADDR_DE
+ dwb .PlayerFacing, RETVAR_EXECUTE
+ dwb hHours, RETVAR_STRBUF2
+ dwb .DayOfWeek, RETVAR_EXECUTE
+ dwb wMapGroup, RETVAR_STRBUF2
+ dwb wMapNumber, RETVAR_STRBUF2
+ dwb .UnownCaught, RETVAR_EXECUTE
+ dwb wEnvironment, RETVAR_STRBUF2
+ dwb .BoxFreeSpace, RETVAR_EXECUTE
+ dwb wBugContestMinsRemaining, RETVAR_STRBUF2
+ dwb wXCoord, RETVAR_STRBUF2
+ dwb wYCoord, RETVAR_STRBUF2
+ dwb wSpecialPhoneCallID, RETVAR_STRBUF2
+ dwb wNrOfBeatenBattleTowerTrainers, RETVAR_STRBUF2
+ dwb wKurtApricornQuantity, RETVAR_STRBUF2
+ dwb wCurrentCaller, RETVAR_ADDR_DE
+ dwb wBlueCardBalance, RETVAR_ADDR_DE
+ dwb wBuenasPassword, RETVAR_ADDR_DE
+ dwb wKenjiBreakTimer, RETVAR_STRBUF2
+ dwb NULL, RETVAR_STRBUF2
+; 806c5
+
+.CountCaughtMons: ; 806c5
+; Caught mons.
+ ld hl, wPokedexCaught
+ ld b, wEndPokedexCaught - wPokedexCaught
+ call CountSetBits
+ ld a, [wd265]
+ jp .loadstringbuffer2
+; 806d3
+
+.CountSeenMons: ; 806d3
+; Seen mons.
+ ld hl, wPokedexSeen
+ ld b, wEndPokedexSeen - wPokedexSeen
+ call CountSetBits
+ ld a, [wd265]
+ jp .loadstringbuffer2
+; 806e1
+
+.CountBadges: ; 806e1
+; Number of owned badges.
+ ld hl, wBadges
+ ld b, 2
+ call CountSetBits
+ ld a, [wd265]
+ jp .loadstringbuffer2
+; 806ef
+
+.PlayerFacing: ; 806ef
+; The direction the player is facing.
+ ld a, [wPlayerDirection]
+ 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, wUnownDex
+ ld b, 0
+.loop
+ ld a, [hli]
+ and a
+ ret z
+ inc b
+ ld a, b
+ cp NUM_UNOWN
+ 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