mirror of
https://github.com/pret/pmd-red.git
synced 2024-11-26 22:40:33 +00:00
Dumped dungeon parameters
This commit is contained in:
parent
b783cb9f0e
commit
97496603de
4
Makefile
4
Makefile
@ -175,6 +175,7 @@ include dungeon_trap.mk
|
||||
include data_monster.mk
|
||||
include data_item.mk
|
||||
include data_move.mk
|
||||
include data_dungeon.mk
|
||||
include graphics.mk
|
||||
|
||||
$(TOOLDIRS):
|
||||
@ -197,6 +198,7 @@ tidy:
|
||||
$(RM) -f $(MONSTER_DATA)
|
||||
$(RM) -f $(LEARNSET_DATA)
|
||||
$(RM) -f $(LEARNSET_PTRS)
|
||||
$(RM) -f $(DUNGEON_DATA)
|
||||
$(RM) -f $(DUNGEON_FLOOR)
|
||||
$(RM) -f $(DUNGEON_POKEMON)
|
||||
$(RM) -f $(DUNGEON_TRAP)
|
||||
@ -220,7 +222,7 @@ $(C_BUILDDIR)/%.o: $(C_SUBDIR)/%.c
|
||||
$(C_BUILDDIR)/%.d: $(C_SUBDIR)/%.c
|
||||
@$(call scaninc,$(INCLUDE_PATHS))
|
||||
|
||||
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s dungeon_pokemon dungeon_floor dungeon_trap data_monster data_item data_move data_learnset data_learnset_ptrs
|
||||
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s dungeon_pokemon dungeon_floor dungeon_trap data_monster data_item data_move data_learnset data_learnset_ptrs data_dungeon
|
||||
@$(CPP) -x assembler-with-cpp $(CPPFLAGS) $< -o $(DATA_ASM_BUILDDIR)/$*.i.s
|
||||
@$(PREPROC) $(DATA_ASM_BUILDDIR)/$*.i.s charmap.txt > $(DATA_ASM_BUILDDIR)/$*.s
|
||||
$(AS) $(ASFLAGS) -o $@ $(DATA_ASM_BUILDDIR)/$*.s
|
||||
|
@ -1363,7 +1363,7 @@ _0803DAFE:
|
||||
ldr r1, _0803DBA8
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
bl GetStairDirection
|
||||
bl IsStairDirectionUp
|
||||
lsls r0, 24
|
||||
ldr r6, _0803DBB0
|
||||
cmp r0, 0
|
||||
@ -2196,7 +2196,7 @@ _0803E1BC:
|
||||
ldr r1, _0803E1D8
|
||||
adds r0, r4, r1
|
||||
ldrb r0, [r0]
|
||||
bl GetStairDirection
|
||||
bl IsStairDirectionUp
|
||||
lsls r0, 24
|
||||
movs r1, 0x16
|
||||
cmp r0, 0
|
||||
@ -5603,7 +5603,7 @@ _0803FCB0:
|
||||
ldr r3, _0803FCF8
|
||||
adds r0, r2, r3
|
||||
ldrb r0, [r0]
|
||||
bl GetStairDirection
|
||||
bl IsStairDirectionUp
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0803FCFC
|
||||
|
@ -546,7 +546,7 @@ _08042694:
|
||||
ldr r1, _080426C0
|
||||
adds r0, r1
|
||||
ldrb r0, [r0]
|
||||
bl GetStairDirection
|
||||
bl IsStairDirectionUp
|
||||
lsls r0, 24
|
||||
ldr r4, _080426C4
|
||||
cmp r0, 0
|
||||
|
@ -7423,7 +7423,7 @@ _080614C8:
|
||||
ldr r3, _08061578
|
||||
adds r0, r1, r3
|
||||
ldrb r0, [r0]
|
||||
bl sub_8090158
|
||||
bl IsDungeonUnk8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806154C
|
||||
|
@ -541,9 +541,8 @@ gAvoidCaptureText: @ 8109CE4
|
||||
gFinalScenarioText: @ 8109CF4
|
||||
.incbin "baserom.gba", 0x109CF4, 0x3C
|
||||
|
||||
.global gDungeons
|
||||
gDungeons: @ 8109D30
|
||||
.incbin "baserom.gba", 0x109D30, 0x620
|
||||
@ 8109D30
|
||||
#include "dungeon/dungeon_data.inc"
|
||||
|
||||
.global gUnknown_810A350
|
||||
gUnknown_810A350: @ 810A350
|
||||
|
1
data/dungeon/.gitignore
vendored
1
data/dungeon/.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
**/pokemon_found.inc
|
||||
**/floor_id.inc
|
||||
trap_data.inc
|
||||
dungeon_data.inc
|
||||
|
1668
data/dungeon/dungeon_data.json
Normal file
1668
data/dungeon/dungeon_data.json
Normal file
File diff suppressed because it is too large
Load Diff
14
data_dungeon.mk
Normal file
14
data_dungeon.mk
Normal file
@ -0,0 +1,14 @@
|
||||
# Dungeon data
|
||||
|
||||
DUNGEON_DIR = $(DATA_ASM_SUBDIR)/dungeon
|
||||
DUNGEON_DATA = $(DUNGEON_DIR)/dungeon_data.inc
|
||||
|
||||
# Headers included by tools/dungeonjson/dungeonjson.cpp:generate_dungeon_data_text
|
||||
DUNGEON_DATA_INC = \
|
||||
include/constants/dungeon.h \
|
||||
include/constants/move_id.h
|
||||
|
||||
data_dungeon: $(DUNGEON_DATA);
|
||||
|
||||
$(DUNGEON_DATA): $(DUNGEON_DIR)/dungeon_data.json $(DUNGEON_DATA_INC)
|
||||
$(DUNGEONJSON) dungeon pmd-red $<
|
@ -8,4 +8,4 @@ DUNGEON_POKEMON := $(patsubst $(DUNGEONS_DIR)/%/,$(DUNGEONS_DIR)/%/pokemon_found
|
||||
dungeon_pokemon: $(DUNGEON_POKEMON);
|
||||
|
||||
$(DUNGEONS_DIR)/%/pokemon_found.inc: $(DUNGEONS_DIR)/%/pokemon_found.json
|
||||
$(DUNGEONJSON) dungeon pmd-red $<
|
||||
$(DUNGEONJSON) dungeon_pokemon pmd-red $<
|
||||
|
@ -11,7 +11,7 @@ struct DungeonName
|
||||
|
||||
struct DungeonDataEntry
|
||||
{
|
||||
/* 0x0 */ u8 stairDirection;
|
||||
/* 0x0 */ bool8 stairDirectionUp;
|
||||
/* 0x1 */ bool8 leaderCanSwitch;
|
||||
/* 0x2 */ bool8 recruitingEnabled;
|
||||
/* 0x3 */ s8 rescuesAllowed;
|
||||
@ -19,8 +19,8 @@ struct DungeonDataEntry
|
||||
/* 0x5 */ u8 maxPartyMembers;
|
||||
/* 0x6 */ bool8 levelResetTo1;
|
||||
/* 0x7 */ bool8 moneyResetTo0;
|
||||
/* 0x8 */ u8 unk8;
|
||||
/* 0x9 */ u8 unk9;
|
||||
/* 0x8 */ bool8 unk8;
|
||||
/* 0x9 */ bool8 hasCheckpoint;
|
||||
/* 0xA */ bool8 forceGameSave; // Whether to quicksave or not before entering.
|
||||
/* 0xB */ u8 HMMask; // HM mask for dungeon entry requirements (Fly, Dive, Waterfall, Surf, Water).
|
||||
/* 0xC */ s16 turnLimit;
|
||||
@ -34,6 +34,6 @@ u32 sub_80908D8(struct DungeonLocation *dungeon);
|
||||
u8 sub_8090910(struct DungeonLocation *dungeon, u32 param_2);
|
||||
bool8 sub_809095C(u8 dungeon);
|
||||
s8 GetRescuesAllowed(u8 dungeon);
|
||||
u8 GetUnk9(u8 dungeon);
|
||||
bool8 HasCheckpoint(u8 dungeon);
|
||||
|
||||
#endif //GUARD_DUNGEON_H
|
||||
|
@ -25,9 +25,9 @@ const u8 *GetDungeonName2(u8 dungeon)
|
||||
return gDungeonNames[dungeon].name2;
|
||||
}
|
||||
|
||||
u8 GetStairDirection(u8 dungeon)
|
||||
bool8 IsStairDirectionUp(u8 dungeon)
|
||||
{
|
||||
return gDungeons[dungeon].stairDirection;
|
||||
return gDungeons[dungeon].stairDirectionUp;
|
||||
}
|
||||
|
||||
s16 GetTurnLimit(u8 dungeon)
|
||||
@ -40,9 +40,9 @@ bool8 IsForceGameSave(u8 dungeon)
|
||||
return gDungeons[dungeon].forceGameSave;
|
||||
}
|
||||
|
||||
u8 GetUnk9(u8 dungeon)
|
||||
u8 HasCheckpoint(u8 dungeon)
|
||||
{
|
||||
return gDungeons[dungeon].unk9;
|
||||
return gDungeons[dungeon].hasCheckpoint;
|
||||
}
|
||||
|
||||
bool8 IsLevelResetTo1(u8 dungeon)
|
||||
@ -70,7 +70,7 @@ bool8 IsRecruitingEnabled(u8 dungeon)
|
||||
return gDungeons[dungeon].recruitingEnabled;
|
||||
}
|
||||
|
||||
u8 sub_8090158(u8 dungeon)
|
||||
bool8 IsDungeonUnk8(u8 dungeon)
|
||||
{
|
||||
return gDungeons[dungeon].unk8;
|
||||
}
|
||||
@ -111,7 +111,7 @@ void PrintYellowDungeonNametoBuffer(u8 *buffer, struct DungeonLocation *dungeonL
|
||||
|
||||
void PrintDungeonLocationtoBuffer(u8 *buffer, struct DungeonLocation *dungeonLocation)
|
||||
{
|
||||
if(gDungeons[dungeonLocation->id].stairDirection != 0){
|
||||
if(gDungeons[dungeonLocation->id].stairDirectionUp){
|
||||
sprintfStatic(buffer, gUnknown_8108F18, gDungeonNames[dungeonLocation->id].name1, dungeonLocation->floor); //_F
|
||||
}
|
||||
else
|
||||
|
@ -131,7 +131,7 @@ bool8 sub_8083C88(u8 param_1)
|
||||
|
||||
temp = &gDungeon->unk1CE98;
|
||||
|
||||
if (((GetUnk9(gDungeon->dungeonLocation.id) == 0) &&
|
||||
if ((!HasCheckpoint(gDungeon->dungeonLocation.id) &&
|
||||
((gDungeon->unk65C != 0) || (param_1 != 0))) ||
|
||||
(temp->unk14 != 0x227)) {
|
||||
return TRUE;
|
||||
|
@ -757,6 +757,32 @@ string generate_learnset_data_text(Json data) {
|
||||
return text.str();
|
||||
}
|
||||
|
||||
string generate_dungeon_data_text(Json data) {
|
||||
ostringstream text;
|
||||
|
||||
text << "@ This is auto-generated by dungeon_data.json.\n";
|
||||
text << ".global gDungeons\n";
|
||||
text << "gDungeons:";
|
||||
for (Json data_entry : data.array_items()) {
|
||||
text << read_json_bool(data_entry["stairDirectionUp"])
|
||||
<< read_json_bool(data_entry["leaderCanSwitch"])
|
||||
<< read_json_bool(data_entry["recruitingEnabled"])
|
||||
<< read_json_int(data_entry["rescuesAllowed"], 1)
|
||||
<< read_json_int(data_entry["maxItemsAllowed"], 1)
|
||||
<< read_json_int(data_entry["maxPartyMembers"], 1)
|
||||
<< read_json_bool(data_entry["levelResetTo1"])
|
||||
<< read_json_bool(data_entry["moneyResetTo0"])
|
||||
<< read_json_bool(data_entry["unk8"])
|
||||
<< read_json_bool(data_entry["hasCheckpoint"])
|
||||
<< read_json_bool(data_entry["forceGameSave"])
|
||||
<< read_json_int(data_entry["HMMask"], 1)
|
||||
<< read_json_int(data_entry["turnLimit"], 2)
|
||||
<< read_json_int(data_entry["randomMovementChance"], 2);
|
||||
}
|
||||
text << TABLE_END;
|
||||
return text.str();
|
||||
}
|
||||
|
||||
string get_directory_name(string filename) {
|
||||
size_t dir_pos = filename.find_last_of("/\\");
|
||||
|
||||
@ -1041,8 +1067,10 @@ int main(int argc, char *argv[]) {
|
||||
process_groups(filepath);
|
||||
} else if (mode == "layouts") {
|
||||
process_layouts(filepath);
|
||||
} else if (mode == "dungeon") {
|
||||
} else if (mode == "dungeon_pokemon") {
|
||||
process_json(filepath, "pokemon_found.inc", generate_pokemon_table_text);
|
||||
} else if (mode == "dungeon") {
|
||||
process_json(filepath, "dungeon_data.inc", generate_dungeon_data_text);
|
||||
} else if (mode == "floor") {
|
||||
process_json(filepath, "floor_id.inc", generate_floorID_table_text);
|
||||
} else if (mode == "monster") {
|
||||
|
Loading…
Reference in New Issue
Block a user