Inindo (US)

For the US port of Super Inindou - Datou Nobunaga

The important parts

C++ struct format

These maps are presented as c++ structs. I find this format more useful and far easier to read than a tabled list of offsets. Where needed it is possible to add offsets to the structs as comments to aid editing the files via hex editor or otherwise. In fact if I could motivate others to move to this format for other projects related to the SNES I think it would be great.

C++ data types

The types used are signed "ixx" or unsigned "uxx" bits. A few other types are used from the "snes" namespace that haven't been posted here.

They can be implemented like so:

#include <cstdint>
// preferably inside a namespace such as "snes".
namespace snes
{
	using u08 = std::uint8_t;
	using u16 = std::uint16_t;
	using u32 = std::uint32_t;
}

Non-US ROMs or SRAMs

Some of this data can also apply to the original Japanese ROM as in many cases the code is mostly identical with only offsets changed. There are some major differences however including that the original ROM is a 12 mbit cart while the US translation is only 8 mbit. The size is reduced mostly by application of compression for many "cutscene" bitmaps which are raw in the original. In addition the original uses its own alphabet (Shift-JIS?) where the US version uses US-ASCII. This means most if not all of the data offsets are shifted around.

Information on the web?

I recall reading an interview with one of the programmers involved in the US port at some point in the past where the modifications were mentioned. I have not been able to locate the transcript of this interview. The content included discussion of "Engrish translations of/in games" and "good uses of goto" regarding the bit-shifting jumptable for the compression function. I thought the content was posted to slashdot.org but I haven't been able to verify that. Being able to locate this article may be useful for whatever additional information is available.