Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
battle.cpp
Go to the documentation of this file.
1#include "common.h"
2#include "ld_addrs.h"
3#include "battle.h"
4#include "battle_tables.h"
5#include "hud_element.h"
6#include "sprite.h"
7#include "game_modes.h"
9
10extern "C" {
11
23
24
25#define BTL_AREA(id, debugName) { \
26 .name = debugName, \
27 .dmaStart = battle_area_##id##_ROM_START, \
28 .dmaEnd = battle_area_##id##_ROM_END, \
29 .dmaDest = battle_area_##id##_VRAM, \
30 .battles = &battle::area::id::Battles, \
31 .stages = &battle::area::id::Stages, \
32}
33
34// standard battle area table entry
35#define BTL_AREA_C(id, debugName) { \
36 .name = debugName, \
37 .dmaStart = battle_area_##id##_ROM_START, \
38 .dmaEnd = battle_area_##id##_ROM_END, \
39 .dmaDest = battle_area_##id##_VRAM, \
40 .battles = &b_area_##id##_Formations, \
41 .stages = &b_area_##id##_Stages, \
42} \
43
44// extended battle area with a dmaTable, used by kzn2 for lava piranha animations
45#define BTL_AREA_DMA(id, jpName) { \
46 .name = jpName, \
47 .dmaStart = battle_area_##id##_ROM_START, \
48 .dmaEnd = battle_area_##id##_ROM_END, \
49 .dmaDest = battle_area_##id##_VRAM, \
50 .battles = &b_area_##id##_Formations, \
51 .stages = &b_area_##id##_Stages, \
52 .dmaTable = b_area_##id##_dmaTable, \
53} \
54
55// auxiliary battle area for omo which contains only additional enemy data
56#define BTL_AREA_AUX(id, jpName) { \
57 .name = jpName, \
58 .dmaStart = battle_area_##id##_ROM_START, \
59 .dmaEnd = battle_area_##id##_ROM_END, \
60 .dmaDest = battle_area_##id##_VRAM, \
61} \
62
69 BTL_AREA_C(kmr_part_1, "KMR Part 1"),
70 BTL_AREA_C(kmr_part_2, "エリア KMR その2"),
71 BTL_AREA_C(kmr_part_3, "エリア KMR その3"),
72 BTL_AREA_C(mac, "エリア MAC"),
73 BTL_AREA_C(hos, "エリア HOS"),
74 BTL_AREA_C(nok, "エリア NOK"),
75 BTL_AREA_C(trd_part_1, "エリア TRD その1"),
76 BTL_AREA_C(trd_part_2, "エリア TRD その2"),
77 BTL_AREA_C(trd_part_3, "エリア TRD その3"),
78 BTL_AREA_C(iwa, "エリア IWA"),
79 BTL_AREA_C(sbk, "エリア SBK"),
80 BTL_AREA_C(isk_part_1, "エリア ISK その1"),
81 BTL_AREA_C(isk_part_2, "エリア ISK その2"),
82 BTL_AREA_C(mim, "エリア MIM"),
83 BTL_AREA_C(arn, "エリア ARN"),
84 BTL_AREA_C(dgb, "エリア DGB"),
85 BTL_AREA_C(omo, "エリア OMO"),
86 BTL_AREA_C(omo2, "エリア OMO2"),
87 BTL_AREA_C(omo3, "エリア OMO3"),
88 BTL_AREA_C(kgr, "エリア KGR"),
89 BTL_AREA_C(jan, "エリア JAN"),
90 BTL_AREA_C(jan2, "エリア JAN2"),
91 BTL_AREA_C(kzn, "エリア KZN"),
92 BTL_AREA_DMA(kzn2, "エリア KZN2"),
93 BTL_AREA_C(flo, "エリア FLO"),
94 BTL_AREA_C(flo2, "エリア FLO2"),
95 BTL_AREA_C(tik, "エリア TIK"),
96 BTL_AREA_C(tik2, "エリア TIK2"),
97 BTL_AREA_C(tik3, "エリア TIK3"),
98 BTL_AREA_C(sam, "エリア SAM"),
99 BTL_AREA_C(sam2, "エリア SAM2"),
100 BTL_AREA_C(pra, "エリア PRA"),
101 BTL_AREA_C(pra2, "エリア PRA2"),
102 BTL_AREA_C(pra3, "エリア PRA3"),
103 BTL_AREA_C(kpa, "エリア KPA"),
104 BTL_AREA_C(kpa2, "エリア KPA2"),
105 BTL_AREA_C(kpa3, "エリア KPA3"),
106 BTL_AREA_C(kpa4, "エリア KPA4"),
107 BTL_AREA_C(kkj, "エリア KKJ"),
108 BTL_AREA_C(dig, "エリア DIG"),
109 BTL_AREA_AUX(omo2_1, "エリア OMO2_1"),
110 BTL_AREA_AUX(omo2_2, "エリア OMO2_2"),
111 BTL_AREA_AUX(omo2_3, "エリア OMO2_3"),
112 BTL_AREA_AUX(omo2_4, "エリア OMO2_4"),
113 BTL_AREA_AUX(omo2_5, "エリア OMO2_5"),
114 BTL_AREA_AUX(omo2_6, "エリア OMO2_6"),
115};
116
128
146
154
158
162
165 s32 i;
166
167 playerData->curHP = 15;
168 playerData->curMaxHP = 15;
169 playerData->hardMaxHP = 15;
170 playerData->curFP = 10;
171 playerData->curMaxFP = 10;
172 playerData->hardMaxFP = 10;
173 playerData->level = 3;
174 playerData->hasActionCommands = TRUE;
175 playerData->starPoints = 55;
176 playerData->bootsLevel = GEAR_RANK_NORMAL;
177 playerData->hammerLevel = GEAR_RANK_NORMAL;
178 playerData->coins = 34;
179
180 for (i = 1; i < ARRAY_COUNT(playerData->partners); i++) {
181 playerData->partners[i].enabled = TRUE;
182 playerData->partners[i].level = 2;
183 }
184
185 playerData->curPartner = PARTNER_GOOMBARIO;
186
187 for (i = 0; i < ARRAY_COUNT(playerData->badges); i++) {
188 playerData->badges[i] = ITEM_NONE;
189 }
190
191 for (i = 0; i < ARRAY_COUNT(playerData->equippedBadges); i++) {
192 playerData->equippedBadges[i] = ITEM_NONE;
193 }
194
195 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
196 playerData->invItems[i] = ITEM_NONE;
197 }
198
199 playerData->unused_288 = 0;
200 playerData->merleeSpellType = MERLEE_SPELL_NONE;
201 playerData->merleeCastsLeft = 0;
202 playerData->merleeTurnCount = 0;
203 playerData->maxStarPower = 0;
204 playerData->starPower = 0;
205 playerData->starBeamLevel = 0;
206}
207
210 u32 mode;
212
217
225 clear_npcs();
243
244 switch (index) {
245 case 0: // hammer first strike on Fuzzies
247 mode = 0;
248 playerData->hasActionCommands = FALSE;
250 break;
251 case 1: // jump on Monty Mole
253 mode = 0;
254 playerData->curPartner = PARTNER_BOW;
256 break;
257 case 2: // Parakarry shell shot against Pokey
259 mode = 0;
260 playerData->curPartner = PARTNER_PARAKARRY;
263 break;
264 case 3: // Thunder Rage on Shy Guys at the slot machine
266 mode = 0;
267 playerData->curPartner = PARTNER_WATT;
269 break;
270 case 4: // stomped by Tubba Blubba
272 mode = 0;
273 playerData->curPartner = PARTNER_KOOPER;
276 break;
277 default:
279 mode = 2;
281 }
282
285
286 switch (mode) {
287 case 0:
294 break;
295 case 1:
298 gCurrentEncounter.hitTier = playerData->hammerLevel;
300 break;
301 case 2:
306 break;
307 case 3:
311 break;
312 case 4:
317 break;
318 }
319
327}
328
329} // extern "C"
BSS s32 PopupMenu_SelectedIndex
BSS s32 gBattleSubState
Definition battle.cpp:17
BSS s32 gDefeatedBattleSubstate
Definition battle.cpp:16
BSS Battle * gOverrideBattlePtr
Definition battle.cpp:21
void set_battle_formation(Battle *battle)
Definition battle.cpp:159
void set_battle_stage(s32 stageID)
Definition battle.cpp:155
BSS s32 gLastDrawBattleState
Definition battle.cpp:15
void load_battle_section(void)
Definition battle.cpp:129
BSS StageListRow * gCurrentStagePtr
Definition battle.cpp:12
BSS s32 gCurrentBattleID
Definition battle.cpp:19
BSS s32 gCurrentStageID
Definition battle.cpp:20
#define BTL_AREA_DMA(id, jpName)
Definition battle.cpp:45
void setup_demo_player(void)
Definition battle.cpp:163
BSS BattleStatus gBattleStatus
Definition battle.cpp:14
BSS s32 gBattleState
Definition battle.cpp:13
void reset_battle_status(void)
Definition battle.cpp:117
#define BTL_AREA_C(id, debugName)
Definition battle.cpp:35
void load_demo_battle(u32 index)
Definition battle.cpp:208
BSS Battle * gCurrentBattlePtr
Definition battle.cpp:22
BattleArea gBattleAreas[]
When updating this, make sure you also update:
Definition battle.cpp:68
void load_battle(s32 battleID)
Definition battle.cpp:147
#define BTL_AREA_AUX(id, jpName)
Definition battle.cpp:56
BSS s32 gDefeatedBattleState
Definition battle.cpp:18
@ BTL_DIG_FORMATION_02
@ BTL_DIG_FORMATION_01
@ BTL_DIG_FORMATION_03
@ BTL_DIG_FORMATION_00
@ BTL_DIG_FORMATION_04
@ MERLEE_SPELL_NONE
Definition enums.h:1936
@ OVERLAY_TYPE_9
Definition enums.h:2383
@ DEBUG_CONTACT_NONE
Definition enums.h:3866
@ DEMO_BTL_FLAG_10
Definition enums.h:3579
@ DEMO_BTL_FLAG_20
Definition enums.h:3580
@ DEMO_BTL_FLAG_ENEMY_ACTING
Definition enums.h:3578
@ DEMO_BTL_FLAG_ENABLED
Definition enums.h:3576
@ DEMO_BTL_FLAG_40
Definition enums.h:3581
@ DEMO_BTL_FLAG_PARTNER_ACTING
Definition enums.h:3577
@ ENCOUNTER_TRIGGER_JUMP
Definition enums.h:269
@ ENCOUNTER_TRIGGER_HAMMER
Definition enums.h:271
@ ENCOUNTER_TRIGGER_NONE
Definition enums.h:268
@ ENCOUNTER_TRIGGER_PARTNER
Definition enums.h:273
@ BATTLE_STATE_START
Definition enums.h:3665
@ BATTLE_STATE_NONE
Definition enums.h:3664
@ CONTEXT_WORLD
Definition enums.h:3562
@ GEAR_RANK_NORMAL
Definition enums.h:2045
@ PARTNER_WATT
Definition enums.h:2925
@ PARTNER_BOW
Definition enums.h:2928
@ PARTNER_PARAKARRY
Definition enums.h:2923
@ PARTNER_KOOPER
Definition enums.h:2921
@ PARTNER_GOOMBARIO
Definition enums.h:2920
@ PLAYER_SPRITES_MARIO_WORLD
Definition enums.h:5931
@ FIRST_STRIKE_NONE
Definition enums.h:3492
@ FIRST_STRIKE_ENEMY
Definition enums.h:3494
@ FIRST_STRIKE_PLAYER
Definition enums.h:3493
void clear_script_list(void)
void clear_item_entity_data(void)
void create_cameras(void)
Definition cam_main.c:254
void clear_animator_list(void)
Definition animator.c:222
void clear_model_data(void)
Definition model.c:2364
void clear_trigger_data(void)
Definition trigger.c:13
void clear_sprite_shading_data(void)
void clear_entity_data(b32)
Definition entity.c:787
u32 dma_copy(Addr romStart, Addr romEnd, void *vramDest)
Definition 43F0.c:442
s32 evt_set_variable(Evt *script, Bytecode var, s32 value)
Definition evt.c:1882
void set_screen_overlay_params_front(u8, f32)
void clear_printers(void)
Definition msg.c:196
void clear_player_status(void)
Definition 77480.c:806
void clear_effect_data(void)
Definition effects.c:41
HeapNode * general_heap_create(void)
Definition heap.c:6
void clear_worker_list(void)
Definition worker.c:10
void clear_player_data(void)
Definition inventory.c:54
void btl_set_state(s32 battleState)
void clear_entity_models(void)
void reset_background_settings(void)
Definition background.c:33
void initialize_status_bar(void)
Definition inventory.c:482
void reset_back_screen_overlay_progress(void)
void set_game_mode(s32 modeID)
Definition game_modes.c:127
@ GAME_MODE_BATTLE
Definition game_modes.h:15
void hud_element_clear_cache(void)
char unk_07
Definition npc.h:370
void clear_npcs(void)
Definition npc.c:59
void clear_encounter_status(void)
Definition npc.c:2222
EncounterStatus gCurrentEncounter
Definition encounter.c:175
s8 instigatorValue
Definition npc.h:378
s8 firstStrikeType
Definition npc.h:367
@ GF_Tutorial_SwapTurnOrder
#define UNPACK_BTL_AREA(battleID)
Definition macros.h:160
#define BSS
Definition macros.h:7
#define ARRAY_COUNT(arr)
Definition macros.h:40
#define UNPACK_BTL_INDEX(battleID)
Definition macros.h:161
void spr_init_sprites(s32 playerSpriteSet)
Definition sprite.c:765
Zero-terminated.
Definition battle.h:195
Zero-terminated.
Definition battle.h:206
#define BTL_STAGE_DEFAULT
Definition stage_names.h:3
@ BTL_SUBSTATE_INIT
Definition states.h:8
s32 gOverrideFlags
Definition main_loop.c:10
GameStatus * gGameStatusPtr
Definition main_loop.c:31
PlayerData gPlayerData
Definition 77480.c:39