Add Room class for Dungeon editing
Loads basic properties from the dungeon room header by the room ID.
This commit is contained in:
129
src/app/zelda3/dungeon/room.h
Normal file
129
src/app/zelda3/dungeon/room.h
Normal file
@@ -0,0 +1,129 @@
|
||||
#ifndef YAZE_APP_ZELDA3_DUNGEON_ROOM_H
|
||||
#define YAZE_APP_ZELDA3_DUNGEON_ROOM_H
|
||||
|
||||
#include "app/core/common.h"
|
||||
#include "app/gfx/bitmap.h"
|
||||
#include "app/gfx/snes_palette.h"
|
||||
#include "app/gfx/snes_tile.h"
|
||||
#include "app/rom.h"
|
||||
#include "gui/canvas.h"
|
||||
|
||||
namespace yaze {
|
||||
namespace app {
|
||||
namespace zelda3 {
|
||||
namespace dungeon {
|
||||
|
||||
class DungeonDestination {
|
||||
public:
|
||||
DungeonDestination(uint8_t i) : Index(i) {}
|
||||
|
||||
uint8_t Index;
|
||||
uint8_t Target = 0;
|
||||
uint8_t TargetLayer = 0;
|
||||
// RoomObject* AssociatedObject = nullptr;
|
||||
|
||||
// bool IsAssociated() { return AssociatedObject != nullptr; }
|
||||
|
||||
// int RealX() { return AssociatedObject ? AssociatedObject->RealX : 0; }
|
||||
|
||||
// int RealY() { return AssociatedObject ? AssociatedObject->RealY : 0; }
|
||||
|
||||
// void Reset() { AssociatedObject = nullptr; }
|
||||
|
||||
std::string ToString() {
|
||||
return std::to_string(Index) + ": To " + std::to_string(Target);
|
||||
}
|
||||
};
|
||||
|
||||
constexpr int dungeons_palettes_groups = 0x75460; // JP 0x67DD0
|
||||
constexpr int dungeons_main_bg_palette_pointers = 0xDEC4B; // JP Same
|
||||
constexpr int dungeons_palettes = 0xDD734;
|
||||
constexpr int room_items_pointers = 0xDB69; // JP 0xDB67
|
||||
constexpr int rooms_sprite_pointer = 0x4C298; // JP Same //2byte bank 09D62E
|
||||
constexpr int room_header_pointer = 0xB5DD; // LONG
|
||||
constexpr int room_header_pointers_bank = 0xB5E7; // JP Same
|
||||
constexpr int gfx_groups_pointer = 0x6237;
|
||||
constexpr int room_object_layout_pointer = 0x882D;
|
||||
constexpr int room_object_pointer = 0x874C; // Long pointer
|
||||
constexpr int chests_length_pointer = 0xEBF6;
|
||||
constexpr int chests_data_pointer1 = 0xEBFB;
|
||||
|
||||
constexpr int messages_id_dungeon = 0x3F61D;
|
||||
|
||||
constexpr int blocks_length = 0x8896; // Word value
|
||||
constexpr int blocks_pointer1 = 0x15AFA;
|
||||
constexpr int blocks_pointer2 = 0x15B01;
|
||||
constexpr int blocks_pointer3 = 0x15B08;
|
||||
constexpr int blocks_pointer4 = 0x15B0F;
|
||||
constexpr int torch_data = 0x2736A; // JP 0x2704A
|
||||
constexpr int torches_length_pointer = 0x88C1;
|
||||
constexpr int sprite_blockset_pointer = 0x5B57;
|
||||
|
||||
constexpr int sprites_data = 0x4D8B0;
|
||||
|
||||
constexpr int sprites_data_empty_room = 0x4D8AE;
|
||||
constexpr int sprites_end_data = 0x4EC9E;
|
||||
constexpr int pit_pointer = 0x394AB;
|
||||
constexpr int pit_count = 0x394A6;
|
||||
constexpr int doorPointers = 0xF83C0;
|
||||
|
||||
// doors
|
||||
constexpr int door_gfx_up = 0x4D9E;
|
||||
constexpr int door_gfx_down = 0x4E06;
|
||||
constexpr int door_gfx_cavexit_down = 0x4E06;
|
||||
constexpr int door_gfx_left = 0x4E66;
|
||||
constexpr int door_gfx_right = 0x4EC6;
|
||||
constexpr int door_pos_up = 0x197E;
|
||||
constexpr int door_pos_down = 0x1996;
|
||||
constexpr int door_pos_left = 0x19AE;
|
||||
constexpr int door_pos_right = 0x19C6;
|
||||
|
||||
constexpr int dungeon_spr_ptrs = 0x090000;
|
||||
|
||||
class Room {
|
||||
public:
|
||||
Room() = default;
|
||||
|
||||
private:
|
||||
void LoadChests();
|
||||
void LoadBlocks();
|
||||
void LoadTorches();
|
||||
void LoadSecrets();
|
||||
void Resync();
|
||||
|
||||
void LoadObjectsFromArray(int loc);
|
||||
void LoadSpritesFromArray(int loc);
|
||||
|
||||
void LoadRoomFromROM();
|
||||
|
||||
DungeonDestination Pits;
|
||||
DungeonDestination Stair1;
|
||||
DungeonDestination Stair2;
|
||||
DungeonDestination Stair3;
|
||||
DungeonDestination Stair4;
|
||||
|
||||
int RoomID = 0;
|
||||
int MessageID = 0;
|
||||
ushort MessageID;
|
||||
uchar BackgroundTileset;
|
||||
uchar SpriteTileset;
|
||||
uchar Layer2Behavior;
|
||||
uchar Palette;
|
||||
uchar Floor1Graphics;
|
||||
uchar Floor2Graphics;
|
||||
uchar Layer2Mode;
|
||||
|
||||
// LayerMergeType LayerMerging;
|
||||
uchar Tag1;
|
||||
uchar Tag2;
|
||||
bool IsDark;
|
||||
|
||||
ROM rom_;
|
||||
};
|
||||
|
||||
} // namespace dungeon
|
||||
} // namespace zelda3
|
||||
} // namespace app
|
||||
} // namespace yaze
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user