diff options
Diffstat (limited to 'engine/overworld')
-rwxr-xr-x | engine/overworld/variables.asm | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/engine/overworld/variables.asm b/engine/overworld/variables.asm new file mode 100755 index 00000000..7e6906ee --- /dev/null +++ b/engine/overworld/variables.asm @@ -0,0 +1,119 @@ +GetVarAction_:: + 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 + ld de, wStringBuffer2 + ld [de], a + ret + +.VarActionTable: + 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 wPermission, RETVAR_STRBUF2 + dwb .BoxFreeSpace, RETVAR_EXECUTE + dwb wBugContestMinsRemaining, RETVAR_STRBUF2 + dwb wXCoord, RETVAR_STRBUF2 + dwb wYCoord, RETVAR_STRBUF2 + dwb wSpecialPhoneCallID, RETVAR_STRBUF2 + dwb 0, 0 + +.CountCaughtMons: ; 41cf +; Caught mons. + ld hl, wPokedexCaught + ld b, $20 + call CountSetBits + ld a, [wd151] + jp .loadstringbuffer2 + +.CountSeenMons: ; 41dd +; Seen mons. + ld hl, wPokedexSeen + ld b, $20 + call CountSetBits + ld a, [wd151] + jp .loadstringbuffer2 + +.CountBadges: ; 41eb +; Number of owned badges. + ld hl, wBadges + ld b, 2 + call CountSetBits + ld a, [wd151] + jp .loadstringbuffer2 + +.PlayerFacing: ; 41f9 +; The direction the player is facing. + ld a, [wPlayerDirection] + and $c + rrca + rrca + jp .loadstringbuffer2 + +.DayOfWeek: ; 4203 +; The day of the week. + call GetWeekday + jp .loadstringbuffer2 + +.UnownCaught: ; 4209 +; Number of unique Unown caught. + call CountUnown ; gold: c5ac | silver: c5aa + ld a, b + jp .loadstringbuffer2 + +.BoxFreeSpace: ; 4210 +; Remaining slots in the current box. + ld a, BANK(sBoxCount) + call OpenSRAM + ld hl, sBoxCount + ld a, MONS_PER_BOX + sub [hl] + ld b, a + call CloseSRAM + ld a, b + jp .loadstringbuffer2 + +.BattleResult: ; 4223 + ld a, [wBattleResult] + and $7f + jp .loadstringbuffer2 +; 422b |