News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Trax

Pages: 1 [2]
Personal Projects / Indiana Jones and The Temple of Doom
« on: June 30, 2012, 09:00:32 pm »
I've come to know this game because of a critic of the Angy Video Game Nerd. I gave it a try and it's exactly my kind of game. Systematic retrieval of captured children, items and keys through a maze gets me hooked, for some reason. Sure the AVGN did hit quite a few things that suck about this game, or at the very least, are annoying. This includes the A and B buttons that are inverted, and the pixel precision needed to avoid dying (dip your small toe in lava and you're toast). Other than that, it's a cool game...

So I digged in the ROM and came with some interesting data, which I used to put together an editor called Skull. Level data starts at the very beginning of Bank 0, which is convenient. I managed to get the tile mappings for the tiles that make the maps, except for a few variations that don't make the editor glitchy, anyway. I didn't find the exact way the palettes are mapped for each tile though, so for now, I'm using arbitrary colors. Here's what level 1 and 2 look like:

The game has 8 PRG banks and 8 CHR banks, and uses the MMC3 mapper...

The way the levels are distributed around the ROM is not clear. Each level has a "Mine Cart" counterpart and a secret level, but their respective data is not contiguous in the ROM. Children data is part of the level data, but has a format that is not straightforward. They seem to be placed relative to Indiana's initial position, and possibly in a relative way among themselves. That's something that need to be decoded.

Level data always start with a level "header". That's my analysis of level 1 so far:

0003: Data for Level 1 (19 bytes)

1C 80   001C   Address for Level Tiles
84 81   0184   Address for ?
80 01   0180   Offset (from 001C) for Children types
68 01   0168   Offset for ?
18   Level Width
10   Level Height
C0   Vertical Repeat ?
C0   Horizontal Repeat ?
00   ?
6F 80   006F   Address for Exit Door Tile
0B 03   Position of Exit Door
E8 80   00E8   Address for Starting Point Tile
0C 08   Position of Starting Point
5A 80   005A   Address for Secret Door Tile (bottom)
0E 02   Position of Secret Door

All levels have a similar structure, except that there can be a lot more pointer/offset pairs past byte C (the "?" mark). All levels have at least a starting point, an exit door and a secret door. But levels 2 and above have more than 2 doors in them. And Mine Carts entrances and exits are also considered doors in the game. Following that header comes the level tiles. They are coded from the top-left of the level, going right, then down. No compression...

After the level tiles, there's the children data, in two parts, both with variable length. The first part is like an enumeration of the children in the level. A value of 00 seems to mean "nothing here", and any other value refers to an index in the next part. Always seem to end with "10 00". The first part of children data for level 1 looks like that:

01 02 00 00 00 00 00 00 00 03 00 00 00 05 04 00 00 00 00 00 00 00 00 00 10 00

Then, there's the table that sets the children's position (relative, apparently), and the item they give when you save them.

FC 0E 27   -04 , 0E   3 Sabers   Child 01
FE 0F 06   -02 , 0F   Red Key    Child 02
0F 06 01    0F , 06   Up Arrow   Child 03
FE 0C 17   -02 , 0C   2 Sabers   Child 04
FE 0D 00   -02 , 0D   1 Gun      Child 05

FD   ?

The items byte is easy to decode, where bits 0-3 is the type, and bits 4-7 is the quantity:

x0 = Gun
x1 = Up Arrow
x2 = Down Arrow
x3 = Right Arrow
x4 = Left Arrow
x5 = Map
x6 = Key
x7 = Saber
x8 = Hat
09 = Orange Gem
19 = Red Gem
29 = Blue Gem
xA = Bomb
xB = Glitch
xC = Glitch
xD = Glitch
xE = Glitch
xF = Glitch

Then, you have the data for Level 1 Cart Part. Then Level 2. The location of the level data seems to be determined by a table located at 3592. I can't figure this table competely. If you have any idea how it could work, let me know. There is also more level data located in Bank 2, starting at 8003...

Personal Projects / Contra Demo - Fifth Edition
« on: October 30, 2011, 06:01:09 pm »
Here we go. After almost a year, I've got something for all Contra fans out there. The fifth edition of my demo hack is complete, with the usual ASM tweaks and added difficulty...

I used a new ROM because the remaining free space on the first hack with level 1 to 4 was almost completely maxed out. So when you start a new game, you start on level 5. ROM expansion would have been nice, but I didn't want to spend time on that and concentrate on level design without having to count the unused bytes left on the ROM...

It's a single new level, as I did with all other versions of my demo, but a very long one at that: 53 screens. We now have the Turret Men, with more fierce attacks and more HP. The Tank is the enemy that had the most changes, with faster bullets and something added from scratch: a mortar launcher. Finally, the Boss, which I call the Alien Carrier, with a lot more HP and overall more dangerous. Play the hack to see for yourself...

Contra - Demo Part 2 - Level 5

I made a quick review of the comments that popped up in the previous threads dedicated to my demo, and some of the ideas are interesting. I am still working on proofs of concepts and see what can be done and what could be added to the hack...

Comments and questions are welcome...

Personal Projects / Zelda 1 Music Test
« on: September 13, 2011, 12:32:18 pm »
Okay, so I decided to fiddle a little into NES music formats, which are rarely addressed, for many good reasons. I decoded most of the code in Zelda 1 to be able to create, by hand, an approximate conversion of the Fairy Fountain theme from Zelda ALttP. I used this sheet as a reference...

Here is the IPS file of the modified Intro Theme. The ending is a little abrupt, I just didn't know how to fill in the remaining measures before the theme loops over...

In the Zelda 1 ROM, Bank 0 seems to be dedicated to music and nothing else. Even the sounds and some incidental music (like the "secret found" chime) are not there, apparently. More than half of the bank is unused, so there's no problem with expansion, either for music or anything else. Here are my notes on Bank 0, for anyone interested...

Comments and questions are welcome, as usual...

Personal Projects / Excitebike Editor
« on: December 15, 2010, 03:42:43 am »
Wheeee! When everyone least expected it, another editor! Excitebike editor named Biker...

Excitebike is a ridiculously simple game, with only one 16k PRG bank and one 8k CHR bank. I think the game is fun, though. Too bad there is no more than 5 tracks. Apparently, the arcade version was much more fun and allowed multiple players. Anyway, at least the tracks can be displayed correctly. The object data is very simple, with only basic RLE for repeating objects...

Any comments?

Pages: 1 [2]