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"
8
9extern "C" {
10
22
23
24#define BTL_AREA(id, debugName) { \
25 .name = debugName, \
26 .dmaStart = battle_area_##id##_ROM_START, \
27 .dmaEnd = battle_area_##id##_ROM_END, \
28 .dmaDest = battle_area_##id##_VRAM, \
29 .battles = &battle::area::id::Battles, \
30 .stages = &battle::area::id::Stages, \
31}
32
33// standard battle area table entry
34#define BTL_AREA_C(id, debugName) { \
35 .name = debugName, \
36 .dmaStart = battle_area_##id##_ROM_START, \
37 .dmaEnd = battle_area_##id##_ROM_END, \
38 .dmaDest = battle_area_##id##_VRAM, \
39 .battles = &b_area_##id##_Formations, \
40 .stages = &b_area_##id##_Stages, \
41} \
42
43// extended battle area with a dmaTable, used by kzn2 for lava piranha animations
44#define BTL_AREA_DMA(id, jpName) { \
45 .name = jpName, \
46 .dmaStart = battle_area_##id##_ROM_START, \
47 .dmaEnd = battle_area_##id##_ROM_END, \
48 .dmaDest = battle_area_##id##_VRAM, \
49 .battles = &b_area_##id##_Formations, \
50 .stages = &b_area_##id##_Stages, \
51 .dmaTable = b_area_##id##_dmaTable, \
52} \
53
54// auxiliary battle area for omo which contains only additional enemy data
55#define BTL_AREA_AUX(id, jpName) { \
56 .name = jpName, \
57 .dmaStart = battle_area_##id##_ROM_START, \
58 .dmaEnd = battle_area_##id##_ROM_END, \
59 .dmaDest = battle_area_##id##_VRAM, \
60} \
61
68 BTL_AREA_C(kmr_part_1, "KMR Part 1"),
69 BTL_AREA_C(kmr_part_2, "エリア KMR その2"),
70 BTL_AREA_C(kmr_part_3, "エリア KMR その3"),
71 BTL_AREA_C(mac, "エリア MAC"),
72 BTL_AREA_C(hos, "エリア HOS"),
73 BTL_AREA_C(nok, "エリア NOK"),
74 BTL_AREA_C(trd_part_1, "エリア TRD その1"),
75 BTL_AREA_C(trd_part_2, "エリア TRD その2"),
76 BTL_AREA_C(trd_part_3, "エリア TRD その3"),
77 BTL_AREA_C(iwa, "エリア IWA"),
78 BTL_AREA_C(sbk, "エリア SBK"),
79 BTL_AREA_C(isk_part_1, "エリア ISK その1"),
80 BTL_AREA_C(isk_part_2, "エリア ISK その2"),
81 BTL_AREA_C(mim, "エリア MIM"),
82 BTL_AREA_C(arn, "エリア ARN"),
83 BTL_AREA_C(dgb, "エリア DGB"),
84 BTL_AREA_C(omo, "エリア OMO"),
85 BTL_AREA_C(omo2, "エリア OMO2"),
86 BTL_AREA_C(omo3, "エリア OMO3"),
87 BTL_AREA_C(kgr, "エリア KGR"),
88 BTL_AREA_C(jan, "エリア JAN"),
89 BTL_AREA_C(jan2, "エリア JAN2"),
90 BTL_AREA_C(kzn, "エリア KZN"),
91 BTL_AREA_DMA(kzn2, "エリア KZN2"),
92 BTL_AREA_C(flo, "エリア FLO"),
93 BTL_AREA_C(flo2, "エリア FLO2"),
94 BTL_AREA_C(tik, "エリア TIK"),
95 BTL_AREA_C(tik2, "エリア TIK2"),
96 BTL_AREA_C(tik3, "エリア TIK3"),
97 BTL_AREA_C(sam, "エリア SAM"),
98 BTL_AREA_C(sam2, "エリア SAM2"),
99 BTL_AREA_C(pra, "エリア PRA"),
100 BTL_AREA_C(pra2, "エリア PRA2"),
101 BTL_AREA_C(pra3, "エリア PRA3"),
102 BTL_AREA_C(kpa, "エリア KPA"),
103 BTL_AREA_C(kpa2, "エリア KPA2"),
104 BTL_AREA_C(kpa3, "エリア KPA3"),
105 BTL_AREA_C(kpa4, "エリア KPA4"),
106 BTL_AREA_C(kkj, "エリア KKJ"),
107 BTL_AREA_C(dig, "エリア DIG"),
108 BTL_AREA_AUX(omo2_1, "エリア OMO2_1"),
109 BTL_AREA_AUX(omo2_2, "エリア OMO2_2"),
110 BTL_AREA_AUX(omo2_3, "エリア OMO2_3"),
111 BTL_AREA_AUX(omo2_4, "エリア OMO2_4"),
112 BTL_AREA_AUX(omo2_5, "エリア OMO2_5"),
113 BTL_AREA_AUX(omo2_6, "エリア OMO2_6"),
114};
115
127
145
153
157
161
164 s32 i;
165
166 playerData->curHP = 15;
167 playerData->curMaxHP = 15;
168 playerData->hardMaxHP = 15;
169 playerData->curFP = 10;
170 playerData->curMaxFP = 10;
171 playerData->hardMaxFP = 10;
172 playerData->level = 3;
173 playerData->hasActionCommands = TRUE;
174 playerData->starPoints = 55;
175 playerData->bootsLevel = 0;
176 playerData->hammerLevel = 0;
177 playerData->coins = 34;
178
179 for (i = 1; i < ARRAY_COUNT(playerData->partners); i++) {
180 playerData->partners[i].enabled = TRUE;
181 playerData->partners[i].level = 2;
182 }
183
184 playerData->curPartner = PARTNER_GOOMBARIO;
185
186 for (i = 0; i < ARRAY_COUNT(playerData->badges); i++) {
187 playerData->badges[i] = ITEM_NONE;
188 }
189
190 for (i = 0; i < ARRAY_COUNT(playerData->equippedBadges); i++) {
191 playerData->equippedBadges[i] = ITEM_NONE;
192 }
193
194 for (i = 0; i < ARRAY_COUNT(playerData->invItems); i++) {
195 playerData->invItems[i] = ITEM_NONE;
196 }
197
198 playerData->unused_288 = 0;
199 playerData->merleeSpellType = MERLEE_SPELL_NONE;
200 playerData->merleeCastsLeft = 0;
201 playerData->merleeTurnCount = 0;
202 playerData->maxStarPower = 0;
203 playerData->starPower = 0;
204 playerData->starBeamLevel = 0;
205}
206
209 u32 mode;
210 s32 battleID;
211
216
224 clear_npcs();
242
243 switch (index) {
244 case 0: // hammer first strike on Fuzzies
246 mode = 0;
247 playerData->hasActionCommands = FALSE;
249 break;
250 case 1: // jump on Monty Mole
252 mode = 0;
253 playerData->curPartner = PARTNER_BOW;
255 break;
256 case 2: // Parakarry shell shot against Pokey
258 mode = 0;
259 playerData->curPartner = PARTNER_PARAKARRY;
262 break;
263 case 3: // Thunder Rage on Shy Guys at the slot machine
265 mode = 0;
266 playerData->curPartner = PARTNER_WATT;
268 break;
269 case 4: // stomped by Tubba Blubba
271 mode = 0;
272 playerData->curPartner = PARTNER_KOOPER;
275 break;
276 default:
278 mode = 2;
280 }
281
284
285 switch (mode) {
286 case 0:
293 break;
294 case 1:
297 gCurrentEncounter.hitTier = playerData->hammerLevel;
299 break;
300 case 2:
305 break;
306 case 3:
310 break;
311 case 4:
316 break;
317 }
318
326}
327
328} // extern "C"
BSS s32 PopupMenu_SelectedIndex
BSS s32 gBattleSubState
Definition battle.cpp:16
BSS s32 gDefeatedBattleSubstate
Definition battle.cpp:15
BSS Battle * gOverrideBattlePtr
Definition battle.cpp:20
void set_battle_formation(Battle *battle)
Definition battle.cpp:158
void set_battle_stage(s32 stageID)
Definition battle.cpp:154
BSS s32 gLastDrawBattleState
Definition battle.cpp:14
void load_battle_section(void)
Definition battle.cpp:128
BSS StageListRow * gCurrentStagePtr
Definition battle.cpp:11
BSS s32 gCurrentBattleID
Definition battle.cpp:18
BSS s32 gCurrentStageID
Definition battle.cpp:19
#define BTL_AREA_DMA(id, jpName)
Definition battle.cpp:44
void setup_demo_player(void)
Definition battle.cpp:162
BSS BattleStatus gBattleStatus
Definition battle.cpp:13
BSS s32 gBattleState
Definition battle.cpp:12
void reset_battle_status(void)
Definition battle.cpp:116
#define BTL_AREA_C(id, debugName)
Definition battle.cpp:34
void load_demo_battle(u32 index)
Definition battle.cpp:207
BSS Battle * gCurrentBattlePtr
Definition battle.cpp:21
BattleArea gBattleAreas[]
When updating this, make sure you also update:
Definition battle.cpp:67
void load_battle(s32 battleID)
Definition battle.cpp:146
#define BTL_AREA_AUX(id, jpName)
Definition battle.cpp:55
BSS s32 gDefeatedBattleState
Definition battle.cpp:17
@ 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:1910
@ OVERLAY_TYPE_9
Definition enums.h:2397
@ DEBUG_CONTACT_NONE
Definition enums.h:4266
@ DEMO_BTL_FLAG_10
Definition enums.h:3545
@ DEMO_BTL_FLAG_20
Definition enums.h:3546
@ DEMO_BTL_FLAG_ENEMY_ACTING
Definition enums.h:3544
@ DEMO_BTL_FLAG_ENABLED
Definition enums.h:3542
@ DEMO_BTL_FLAG_40
Definition enums.h:3547
@ DEMO_BTL_FLAG_PARTNER_ACTING
Definition enums.h:3543
@ 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
@ BTL_SUBSTATE_INIT
Definition enums.h:3670
@ BATTLE_STATE_0
Definition enums.h:3630
@ BATTLE_STATE_NORMAL_START
Definition enums.h:3631
@ CONTEXT_WORLD
Definition enums.h:3528
@ PARTNER_WATT
Definition enums.h:2891
@ PARTNER_BOW
Definition enums.h:2894
@ PARTNER_PARAKARRY
Definition enums.h:2889
@ PARTNER_KOOPER
Definition enums.h:2887
@ PARTNER_GOOMBARIO
Definition enums.h:2886
@ PLAYER_SPRITES_MARIO_WORLD
Definition enums.h:6345
@ FIRST_STRIKE_NONE
Definition enums.h:3458
@ FIRST_STRIKE_ENEMY
Definition enums.h:3460
@ FIRST_STRIKE_PLAYER
Definition enums.h:3459
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:1846
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 func_80138188(void)
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 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:152
#define BSS
Definition macros.h:7
#define ARRAY_COUNT(arr)
Definition macros.h:40
#define UNPACK_BTL_INDEX(battleID)
Definition macros.h:153
void spr_init_sprites(s32 playerSpriteSet)
Definition sprite.c:764
Zero-terminated.
Definition battle.h:195
Zero-terminated.
Definition battle.h:206
#define BTL_STAGE_DEFAULT
Definition stage_names.h:3
s32 gOverrideFlags
Definition main_loop.c:10
GameStatus * gGameStatusPtr
Definition main_loop.c:31
PlayerData gPlayerData
Definition 77480.c:39