Register | Login | |||||
Main
| Memberlist
| Active users
| Calendar
| Chat
| Online users Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album |
| |
0 users currently in ROM Hacking. |
User | Post |
Rom Manic Posts: 473/557 |
Originally posted by Gideon Zhi I understand the first part of what you said, but I don't know what you mean by "wired to" the registers and most of the preliminary 32k of WRAM. Originally posted by Gideon Zhi If it's possible, I'd very much like to discuss this with you. As always, I'm on #rohmacking, but I might not be there for the next little while, so anytime during the weekend should be fine. Originally posted by Alice It would be nice, but it was an honest mistake |
HyperHacker Posts: 4519/5072 |
Originally posted by Gideon ZhiOriginally posted by Alice For once I'd like to see someone on this board make a mistake and not be ridiculed for it. FYI, the info came from this oooooold document I read back in 2K3 or so. Originally posted by ASM Hacking for Dummies - v1.0 by SysTEm[id Also, with double bank size you're twice as likely to fit all of a given data block in one bank, negating the need for three-byte pointers. Hence the "use 2-byte pointers more often" idea. |
Gideon Zhi Posts: 76/125 |
It would be nice, certainly. It's probably theoretically possible, too.
There are actually ways to "trick" data load routines into ignoring bank boundaries. I used one of these in Shin Megami Tensei II's translation; when the text load counter overflows the edge of a bank, it just increments the bank number and starts at the "next" byte. Works wonderfully, and I was able to insert the script sequentially without regard for bank boundaries. You have to specifically program for this, though. Also, far as I'm aware, you can access a full 32mbit with lorom addressing provided your origin address is in bank $80. Further, in SA-1 mapping (unconfirmed - certainly the case in SRW Gaiden) you can access both hirom and lorom space. Threw me for a bit of a loop when I first encountered it. |
MathOnNapkins Posts: 1016/1106 |
Well... theoretically HiRom would allow for much more data if you could fill all the banks (minus the WRAM and SRAM banks probably) While this thread addresses existing memory maps fairly well, Rom Manic brings up an interesting point... is it possible to reprogram the system to make a different memory map? Obviously banks would still be 64K from the processor's perspective, but being able to have a memory map that allows for almost a full 16 MB (126.5 megabits exactly) of data sounds nice. |
Gideon Zhi Posts: 75/125 |
Originally posted by Alice What the hell? This information is completely incorrect. Please don't shoot your mouth off on subjects you obviously know nothing about. LoROM databanks are 32K, yes. They are stored consecutively, just like any normal file. There are no empty banks or anything similar between each LoROM bank unless the programmers were stupid and made the game that way; rather, the lower 32K of address space is wired to various registers and a bunch of the first 32K of WRAM ( the $7E/0000-$7E/7FFF range, specifically.) HiROM databanks are 64K. The only functional differences between LoROM and HiROM are that 1) you can fit more data into a HiROM bank, which doesn't necessarily mean you'll be able to "use 2-byte pointers more often" because you could just as well have a small table of 24-bitters pointing to different tables of 16-bitters in different rom banks, and 2) you can't access ram by loading or storing from addresses below $8000 - you actually need to modify the DBR or do indirect loads if you want to get at ramspace. Both have their advantages and disadvantages, and I personally can work with either; the only reason I prefer to work with HiROM titles is that it's slightly easier to convert back and forth between SNES HiROM and a file address than it is with LoROM. |
Kejardon Posts: 67/94 |
On the other hand, LoRom allows you to write to $2000 bytes of RAM and the cpu registers at any time with a 2 byte address. Meaning you can use 2-byte addresses more often.
I personally think LoRom is better - code interacting with the RAM and cpu registers is more common than code that would be optimized by having more than $8000 bytes in a bank. |
HyperHacker Posts: 4515/5072 |
HiROM is more efficient, since LoROM has 32K of unuseable blank space after every 32K of data. HiROM also means you can have smaller code and tables by using 2-byte pointers more often. |
Rom Manic Posts: 472/557 |
I suppose it's not really a big issue, but IF it were possible, would it increase or decrease the performance of a ROM? Like, is LoRom better than HiRom or is the opposite true or neither? |
Sukasa Posts: 1957/2068 |
No. The limit is imposed by the 65c816 and SNES memory mapper itself, so you can't change it. You'll need to work with either of those two limits. |
Rom Manic Posts: 471/557 |
Is it possible to set up a ROM so that it can have ANY size data bank? As I understand it, HiRom has 64 KB banks, and LoRom has 32 KB banks (In relation to the SNES).
I ask this because it may be a more efficient way of storing data within a ROM, as pertaining to addressing data. Of course, I may misunderstand the concept completely, but if it is possible, I might be able to utilize this. |