summaryrefslogtreecommitdiff
path: root/engine/mon_stats.asm
diff options
context:
space:
mode:
authormid-kid <esteve.varela@gmail.com>2018-03-13 13:07:16 +0100
committermid-kid <esteve.varela@gmail.com>2018-03-13 13:21:40 +0100
commitbaa0dc5a963a79843b37888bcfe1d2dfe833ade9 (patch)
tree968c86105bd67a3121d8f3f20018bfc59191f4c9 /engine/mon_stats.asm
parent12070ca50067d3abe36a730190f88ee43f2cace9 (diff)
Organize the engine/ directory
This is an informed attempt at reorganizing the engine/ directory by creating categorized subdirectories, in order to make it easier to navigate and find things. The directories created are as follows: * engine/game: Contains all "minigames", things like the unown puzzle and slot machine. * engine/gfx: Contains all handling of graphics. From loading palettes to playing animations. * engine/link: Contains all multiplayer functionality. * engine/menu: Contains all generic/misc. menus and menu code. Other, more specialized menus are in their own subdirectories (pokedex, pokegear, party menu, etc). * engine/overworld: Contains all handling of the overworld. From loading and connecting maps to wild encounters and the scripting engine. * engine/pokegear: In the same vein as engine/pokedex, except it could use some more splitting up. * engine/pokemon: Contains everything related to manipulating pokemon data. From the pokemon storage system to evolution and mail. * engine/printer: Contains everything related to printing things as well as the printer communication. * engine/title: Contains intro sequences, title screens and credits.
Diffstat (limited to 'engine/mon_stats.asm')
-rw-r--r--engine/mon_stats.asm485
1 files changed, 0 insertions, 485 deletions
diff --git a/engine/mon_stats.asm b/engine/mon_stats.asm
deleted file mode 100644
index 2b5586c51..000000000
--- a/engine/mon_stats.asm
+++ /dev/null
@@ -1,485 +0,0 @@
-DrawPlayerHP: ; 50b0a
- ld a, $1
- jr DrawHP
-
-DrawEnemyHP: ; 50b0e
- ld a, $2
-
-DrawHP: ; 50b10
- ld [wWhichHPBar], a
- push hl
- push bc
- ; box mons have full HP
- ld a, [wMonType]
- cp BOXMON
- jr z, .at_least_1_hp
-
- ld a, [wTempMonHP]
- ld b, a
- ld a, [wTempMonHP + 1]
- ld c, a
-
-; Any HP?
- or b
- jr nz, .at_least_1_hp
-
- xor a
- ld c, a
- ld e, a
- ld a, 6
- ld d, a
- jp .fainted
-
-.at_least_1_hp
- ld a, [wTempMonMaxHP]
- ld d, a
- ld a, [wTempMonMaxHP + 1]
- ld e, a
- ld a, [wMonType]
- cp BOXMON
- jr nz, .not_boxmon
-
- ld b, d
- ld c, e
-
-.not_boxmon
- predef ComputeHPBarPixels
- ld a, 6
- ld d, a
- ld c, a
-
-.fainted
- ld a, c
- pop bc
- ld c, a
- pop hl
- push de
- push hl
- push hl
- call DrawBattleHPBar
- pop hl
-
-; Print HP
- bccoord 1, 1, 0
- add hl, bc
- ld de, wTempMonHP
- ld a, [wMonType]
- cp BOXMON
- jr nz, .not_boxmon_2
- ld de, wTempMonMaxHP
-.not_boxmon_2
- lb bc, 2, 3
- call PrintNum
-
- ld a, "/"
- ld [hli], a
-
-; Print max HP
- ld de, wTempMonMaxHP
- lb bc, 2, 3
- call PrintNum
- pop hl
- pop de
- ret
-
-PrintTempMonStats: ; 50b7b
-; Print wTempMon's stats at hl, with spacing bc.
- push bc
- push hl
- ld de, .StatNames
- call PlaceString
- pop hl
- pop bc
- add hl, bc
- ld bc, SCREEN_WIDTH
- add hl, bc
- ld de, wTempMonAttack
- lb bc, 2, 3
- call .PrintStat
- ld de, wTempMonDefense
- call .PrintStat
- ld de, wTempMonSpclAtk
- call .PrintStat
- ld de, wTempMonSpclDef
- call .PrintStat
- ld de, wTempMonSpeed
- jp PrintNum
-
-.PrintStat: ; 50bab
- push hl
- call PrintNum
- pop hl
- ld de, SCREEN_WIDTH * 2
- add hl, de
- ret
-
-.StatNames: ; 50bb5
- db "ATTACK"
- next "DEFENSE"
- next "SPCL.ATK"
- next "SPCL.DEF"
- next "SPEED"
- next "@"
-
-GetGender: ; 50bdd
-; Return the gender of a given monster (wCurPartyMon/wCurOTMon/wCurWildMon).
-; When calling this function, a should be set to an appropriate wMonType value.
-
-; return values:
-; a = 1: f = nc|nz; male
-; a = 0: f = nc|z; female
-; f = c: genderless
-
-; This is determined by comparing the Attack and Speed DVs
-; with the species' gender ratio.
-
-; Figure out what type of monster struct we're looking at.
-
-; 0: PartyMon
- ld hl, wPartyMon1DVs
- ld bc, PARTYMON_STRUCT_LENGTH
- ld a, [wMonType]
- and a
- jr z, .PartyMon
-
-; 1: OTPartyMon
- ld hl, wOTPartyMon1DVs
- dec a
- jr z, .PartyMon
-
-; 2: sBoxMon
- ld hl, sBoxMon1DVs
- ld bc, BOXMON_STRUCT_LENGTH
- dec a
- jr z, .sBoxMon
-
-; 3: Unknown
- ld hl, wTempMonDVs
- dec a
- jr z, .DVs
-
-; else: WildMon
- ld hl, wEnemyMonDVs
- jr .DVs
-
-; Get our place in the party/box.
-
-.PartyMon:
-.sBoxMon
- ld a, [wCurPartyMon]
- call AddNTimes
-
-.DVs:
-
-; sBoxMon data is read directly from SRAM.
- ld a, [wMonType]
- cp BOXMON
- ld a, BANK(sBox)
- call z, GetSRAMBank
-
-; Attack DV
- ld a, [hli]
- and $f0
- ld b, a
-; Speed DV
- ld a, [hl]
- and $f0
- swap a
-
-; Put our DVs together.
- or b
- ld b, a
-
-; Close SRAM if we were dealing with a sBoxMon.
- ld a, [wMonType]
- cp BOXMON
- call z, CloseSRAM
-
-; We need the gender ratio to do anything with this.
- push bc
- ld a, [wCurPartySpecies]
- dec a
- ld hl, BaseData + BASE_GENDER
- ld bc, BASE_DATA_SIZE
- call AddNTimes
- pop bc
-
- ld a, BANK(BaseData)
- call GetFarByte
-
-; The higher the ratio, the more likely the monster is to be female.
-
- cp GENDERLESS
- jr z, .Genderless
-
- and a ; GENDER_F0?
- jr z, .Male
-
- cp GENDER_F100
- jr z, .Female
-
-; Values below the ratio are male, and vice versa.
- cp b
- jr c, .Male
-
-.Female:
- xor a
- ret
-
-.Male:
- ld a, 1
- and a
- ret
-
-.Genderless:
- scf
- ret
-
-ListMovePP: ; 50c50
- ld a, [wNumMoves]
- inc a
- ld c, a
- ld a, NUM_MOVES
- sub c
- ld b, a
- push hl
- ld a, [wBuffer1]
- ld e, a
- ld d, $0
- ld a, $3e ; P
- call .load_loop
- ld a, b
- and a
- jr z, .skip
- ld c, a
- ld a, "-"
- call .load_loop
-
-.skip
- pop hl
- inc hl
- inc hl
- inc hl
- ld d, h
- ld e, l
- ld hl, wTempMonMoves
- ld b, 0
-.loop
- ld a, [hli]
- and a
- jr z, .done
- push bc
- push hl
- push de
- ld hl, wMenuCursorY
- ld a, [hl]
- push af
- ld [hl], b
- push hl
- callfar GetMaxPPOfMove
- pop hl
- pop af
- ld [hl], a
- pop de
- pop hl
- push hl
- ld bc, wTempMonPP - (wTempMonMoves + 1)
- add hl, bc
- ld a, [hl]
- and $3f
- ld [wStringBuffer1 + 4], a
- ld h, d
- ld l, e
- push hl
- ld de, wStringBuffer1 + 4
- lb bc, 1, 2
- call PrintNum
- ld a, "/"
- ld [hli], a
- ld de, wd265
- lb bc, 1, 2
- call PrintNum
- pop hl
- ld a, [wBuffer1]
- ld e, a
- ld d, 0
- add hl, de
- ld d, h
- ld e, l
- pop hl
- pop bc
- inc b
- ld a, b
- cp NUM_MOVES
- jr nz, .loop
-
-.done
- ret
-
-.load_loop ; 50cc9
- ld [hli], a
- ld [hld], a
- add hl, de
- dec c
- jr nz, .load_loop
- ret
-
-Unreferenced_Function50cd0: ; 50cd0
-.loop
- ld [hl], $32
- inc hl
- ld [hl], $3e
- dec hl
- add hl, de
- dec c
- jr nz, .loop
- ret
-
-Unused_PlaceEnemyHPLevel:
- push hl
- push hl
- ld hl, wPartyMonNicknames
- ld a, [wCurPartyMon]
- call GetNick
- pop hl
- call PlaceString
- call CopyMonToTempMon
- pop hl
- ld a, [wCurPartySpecies]
- cp EGG
- jr z, .egg
- push hl
- ld bc, -12
- add hl, bc
- ld b, $0
- call DrawEnemyHP
- pop hl
- ld bc, 5
- add hl, bc
- push de
- call PrintLevel
- pop de
-
-.egg
- ret
-
-PlaceStatusString: ; 50d0a
- push de
- inc de
- inc de
- ld a, [de]
- ld b, a
- inc de
- ld a, [de]
- or b
- pop de
- jr nz, PlaceNonFaintStatus
- push de
- ld de, FntString
- call CopyStatusString
- pop de
- ld a, $1
- and a
- ret
-
-FntString: ; 50d22
- db "FNT@"
-
-CopyStatusString: ; 50d25
- ld a, [de]
- inc de
- ld [hli], a
- ld a, [de]
- inc de
- ld [hli], a
- ld a, [de]
- ld [hl], a
- ret
-
-PlaceNonFaintStatus: ; 50d2e
- push de
- ld a, [de]
- ld de, PsnString
- bit PSN, a
- jr nz, .place
- ld de, BrnString
- bit BRN, a
- jr nz, .place
- ld de, FrzString
- bit FRZ, a
- jr nz, .place
- ld de, ParString
- bit PAR, a
- jr nz, .place
- ld de, SlpString
- and SLP
- jr z, .no_status
-
-.place
- call CopyStatusString
- ld a, $1
- and a
-
-.no_status
- pop de
- ret
-
-SlpString: db "SLP@"
-PsnString: db "PSN@"
-BrnString: db "BRN@"
-FrzString: db "FRZ@"
-ParString: db "PAR@"
-
-ListMoves: ; 50d6f
-; List moves at hl, spaced every [wBuffer1] tiles.
- ld de, wListMoves_MoveIndicesBuffer
- ld b, $0
-.moves_loop
- ld a, [de]
- inc de
- and a
- jr z, .no_more_moves
- push de
- push hl
- push hl
- ld [wCurSpecies], a
- ld a, MOVE_NAME
- ld [wNamedObjectTypeBuffer], a
- call GetName
- ld de, wStringBuffer1
- pop hl
- push bc
- call PlaceString
- pop bc
- ld a, b
- ld [wNumMoves], a
- inc b
- pop hl
- push bc
- ld a, [wBuffer1]
- ld c, a
- ld b, 0
- add hl, bc
- pop bc
- pop de
- ld a, b
- cp NUM_MOVES
- jr z, .done
- jr .moves_loop
-
-.no_more_moves
- ld a, b
-.nonmove_loop
- push af
- ld [hl], "-"
- ld a, [wBuffer1]
- ld c, a
- ld b, 0
- add hl, bc
- pop af
- inc a
- cp NUM_MOVES
- jr nz, .nonmove_loop
-
-.done
- ret