Enhance DungeonEditor functionality by adding room graphics loading and rendering capabilities; implement bitmap drawing for background layers and room objects in the canvas, improving visual representation of dungeon rooms.
This commit is contained in:
@@ -223,7 +223,7 @@ constexpr int kGfxBufferRoomSpriteStride = 2048;
|
||||
constexpr int kGfxBufferRoomSpriteLastLineOffset = 0x88;
|
||||
|
||||
void Room::CopyRoomGraphicsToBuffer() {
|
||||
auto gfx_buffer_data = rom()->graphics_buffer();
|
||||
auto gfx_buffer_data = rom()->mutable_graphics_buffer();
|
||||
|
||||
// Copy room graphics to buffer
|
||||
int sheet_pos = 0;
|
||||
@@ -231,7 +231,7 @@ void Room::CopyRoomGraphicsToBuffer() {
|
||||
int data = 0;
|
||||
int block_offset = blocks_[i] * kGfxBufferRoomOffset;
|
||||
while (data < kGfxBufferRoomOffset) {
|
||||
uint8_t map_byte = gfx_buffer_data[data + block_offset];
|
||||
uint8_t map_byte = (*gfx_buffer_data)[data + block_offset];
|
||||
if (i < 4) {
|
||||
map_byte += kGfxBufferRoomSpriteLastLineOffset;
|
||||
}
|
||||
@@ -249,18 +249,18 @@ void Room::CopyRoomGraphicsToBuffer() {
|
||||
void Room::LoadAnimatedGraphics() {
|
||||
int gfx_ptr = SnesToPc(rom()->version_constants().kGfxAnimatedPointer);
|
||||
|
||||
auto gfx_buffer_data = rom()->graphics_buffer();
|
||||
auto gfx_buffer_data = rom()->mutable_graphics_buffer();
|
||||
auto rom_data = rom()->vector();
|
||||
int data = 0;
|
||||
while (data < 512) {
|
||||
uint8_t map_byte =
|
||||
gfx_buffer_data[data + (92 * 2048) + (512 * animated_frame_)];
|
||||
(*gfx_buffer_data)[data + (92 * 2048) + (512 * animated_frame_)];
|
||||
current_gfx16_[data + (7 * 2048)] = map_byte;
|
||||
|
||||
map_byte =
|
||||
gfx_buffer_data[data +
|
||||
(rom_data[gfx_ptr + background_tileset_] * 2048) +
|
||||
(512 * animated_frame_)];
|
||||
(*gfx_buffer_data)[data +
|
||||
(rom_data[gfx_ptr + background_tileset_] * 2048) +
|
||||
(512 * animated_frame_)];
|
||||
current_gfx16_[data + (7 * 2048) - 512] = map_byte;
|
||||
data++;
|
||||
}
|
||||
|
||||
@@ -79,6 +79,9 @@ constexpr int NumberOfRooms = 296;
|
||||
|
||||
constexpr uint16_t stairsObjects[] = {0x139, 0x138, 0x13B, 0x12E, 0x12D};
|
||||
|
||||
constexpr int tile_address = 0x001B52;
|
||||
constexpr int tile_address_floor = 0x001B5A;
|
||||
|
||||
struct LayerMergeType {
|
||||
uint8_t ID;
|
||||
std::string Name;
|
||||
@@ -231,7 +234,7 @@ class Room : public SharedRom {
|
||||
bool is_light_;
|
||||
bool is_loaded_;
|
||||
bool is_dark_;
|
||||
bool is_floor_;
|
||||
bool is_floor_ = true;
|
||||
|
||||
int room_id_;
|
||||
int animated_frame_;
|
||||
|
||||
Reference in New Issue
Block a user