diff --git a/Makefile b/Makefile index b6cff604..0669d375 100644 --- a/Makefile +++ b/Makefile @@ -15,10 +15,10 @@ endif make: ${ENV_RUN} ${MAKE} -j -C build HOST_ENV=${HOST_ENV} -build-rom: +gba-pkg: ${ENV_RUN} ${MAKE} -j -C build ARGS="install" HOST_ENV=${HOST_ENV} ${ENV_RUN} ${MAKE} -j -C build HOST_ENV=${HOST_ENV} - ${ENV_RUN} ./scripts/build_rom.sh + ${ENV_RUN} ./scripts/gba-pkg preinstall: ${ENV_RUN} ${MAKE} -j -C build ARGS="preinstall" HOST_ENV=${HOST_ENV} install: @@ -34,14 +34,14 @@ run: install ./dist/current/bin/nostalgia -debug run-studio: install ./dist/current/bin/nostalgia-studio -profile dist/current/share/nostalgia-studio.json -gba-run: build-rom +gba-run: gba-pkg mgba-qt nostalgia.gba gdb: make gdb ./build/current/src/wombat/wombat gdb-studio: make gdb "./dist/current/bin/nostalgia-studio -profile dist/current/share/nostalgia-studio.json" -devenv-build: +devenv-image: docker build . -t ${DEVENV_IMAGE} devenv: docker run -d \ diff --git a/scripts/build_rom.sh b/scripts/gba-pkg similarity index 100% rename from scripts/build_rom.sh rename to scripts/gba-pkg diff --git a/src/nostalgia/world/world.cpp b/src/nostalgia/world/world.cpp index b7d1b68b..74ec9b22 100644 --- a/src/nostalgia/world/world.cpp +++ b/src/nostalgia/world/world.cpp @@ -11,11 +11,9 @@ namespace nostalgia { namespace world { -Zone::Zone() { - m_bounds.x = -1; - m_bounds.y = -1; - m_bounds.width = -1; - m_bounds.height = -1; +Zone::Zone(common::Bounds bnds) { + const auto size = bnds.width * bnds.height; + m_tiles = new TileDef[size]; } void Zone::draw(core::Context *ctx) { @@ -25,16 +23,12 @@ size_t Zone::size() { return sizeof(Zone) + m_bounds.width * m_bounds.height * sizeof(TileDef); } -TileDef *Zone::tiles() { - return (TileDef*) (this + 1); -} - TileDef *Zone::tile(int row, int column) { - return &tiles()[row * m_bounds.width + column]; + return &m_tiles[row * m_bounds.width + column]; } void Zone::setTile(int row, int column, TileDef *td) { - tiles()[row * m_bounds.width + column] = *td; + m_tiles[row * m_bounds.width + column] = *td; } } diff --git a/src/nostalgia/world/world.hpp b/src/nostalgia/world/world.hpp index 88bc9dd0..b1af5d16 100644 --- a/src/nostalgia/world/world.hpp +++ b/src/nostalgia/world/world.hpp @@ -29,6 +29,10 @@ ox::Error ioOp(T *io, TileDef *obj) { } +struct RegionDef { + uint32_t tileSheetInodes[20]; +}; + struct ZoneDef { int32_t width = 0; int32_t height = 0; @@ -38,17 +42,16 @@ class Zone { private: common::Bounds m_bounds; + TileDef *m_tiles = nullptr; public: - Zone(); + Zone(common::Bounds bnds); void draw(core::Context *ctx); size_t size(); - TileDef *tiles(); - TileDef *tile(int row, int column); void setTile(int row, int column, TileDef *td);