From bf958a4a6ee414af1cd4e6dd6e7935c404c6f72e Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sun, 29 Jun 2025 23:32:11 -0500 Subject: [PATCH] [teagba] Make memory regions cast to bounded ox::Arrays --- deps/teagba/include/teagba/addresses.hpp | 32 ++++++++++++------------ 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/deps/teagba/include/teagba/addresses.hpp b/deps/teagba/include/teagba/addresses.hpp index 7a19f868d..a8a12bc3d 100644 --- a/deps/teagba/include/teagba/addresses.hpp +++ b/deps/teagba/include/teagba/addresses.hpp @@ -5,6 +5,8 @@ #pragma once #include +#include +#include #include ///////////////////////////////////////////////////////////////// @@ -49,7 +51,7 @@ using BgCtl = uint16_t; #define REG_BG3CTL *reinterpret_cast(0x0400'000e) [[nodiscard]] -inline volatile BgCtl ®BgCtl(uintptr_t bgIdx) noexcept { +inline volatile BgCtl ®BgCtl(uintptr_t const bgIdx) noexcept { return *reinterpret_cast(0x0400'0008 + 2 * bgIdx); } @@ -60,7 +62,7 @@ inline volatile BgCtl ®BgCtl(uintptr_t bgIdx) noexcept { #define REG_BG3HOFS *reinterpret_cast(0x0400'001c) [[nodiscard]] -inline volatile uint32_t ®BgHofs(auto bgIdx) noexcept { +volatile uint32_t ®BgHofs(auto const bgIdx) noexcept { return *reinterpret_cast(0x0400'0010 + 4 * bgIdx); } @@ -71,7 +73,7 @@ inline volatile uint32_t ®BgHofs(auto bgIdx) noexcept { #define REG_BG3VOFS *reinterpret_cast(0x0400'001e) [[nodiscard]] -inline volatile uint32_t ®BgVofs(auto bgIdx) noexcept { +volatile uint32_t ®BgVofs(auto const bgIdx) noexcept { return *reinterpret_cast(0x0400'0012 + 4 * bgIdx); } @@ -83,25 +85,23 @@ inline volatile uint32_t ®BgVofs(auto bgIdx) noexcept { ///////////////////////////////////////////////////////////////// // Memory Addresses -#define MEM_EWRAM_BEGIN reinterpret_cast(0x0200'0000) -#define MEM_EWRAM_END reinterpret_cast(0x0203'FFFF) +#define MEM_EWRAM (*reinterpret_cast*>(0x0200'0000)) -#define MEM_IWRAM_BEGIN reinterpret_cast(0x0300'0000) -#define MEM_IWRAM_END reinterpret_cast(0x0300'7FFF) +#define MEM_IWRAM (*reinterpret_cast*>(0x0300'0000)) #define REG_BLNDCTL *reinterpret_cast(0x0400'0050) -#define MEM_BG_PALETTE reinterpret_cast(0x0500'0000) -#define MEM_SPRITE_PALETTE reinterpret_cast(0x0500'0200) +using Palette = ox::Array; +#define MEM_BG_PALETTE (*reinterpret_cast<::Palette*>(0x0500'0000)) +#define MEM_SPRITE_PALETTE (*reinterpret_cast<::Palette*>(0x0500'0200)) using BgMapTile = ox::Array; -#define MEM_BG_TILES reinterpret_cast(0x0600'0000) -#define MEM_BG_MAP reinterpret_cast(0x0600'e000) +#define MEM_BG_TILES (*reinterpret_cast*>(0x0600'0000)) +#define MEM_BG_MAP (*reinterpret_cast*>(0x0600'e000)) -#define MEM_SPRITE_TILES reinterpret_cast(0x0601'0000) -#define MEM_OAM reinterpret_cast(0x0700'0000) +#define MEM_SPRITE_TILES (*reinterpret_cast*>(0x0601'0000)) +#define MEM_OAM (*reinterpret_cast*>(0x0700'0000)) -#define MEM_ROM reinterpret_cast(0x0800'0000) +#define MEM_ROM (*reinterpret_cast*>(0x0700'0000)) -#define MEM_SRAM reinterpret_cast(0x0e00'0000) -#define MEM_SRAM_SIZE 65535 +#define MEM_SRAM (*reinterpret_cast*>(0x0e00'0000))