English Amiga Board

English Amiga Board (https://eab.abime.net/index.php)
-   project.CARE (https://eab.abime.net/forumdisplay.php?f=58)
-   -   Some disassembled games with debug infos. (https://eab.abime.net/showthread.php?t=41598)

Retro1234 15 January 2010 15:47

Quote:

Originally Posted by hitchhikr (Post 634108)
Added Ultima 3.

Hats of to you ill give this a go later:)

Minuous 16 January 2010 00:44

Quote:

a 68k -> C converter (I wrote a very basic one)
You've written a decompiler!? 8-O Is it available for download anywhere?

Minuous 29 January 2010 15:16

jotd...?

Galahad/FLT 29 January 2010 19:06

Quote:

Originally Posted by Minuous (Post 638056)
Galahad...?


huh?

kamelito 29 January 2010 20:43

Interesting Wikipédia but you could add ports games from others computers mostly Atari ST IMHO
KML

Minuous 30 January 2010 02:25

Quote:

Originally Posted by Galahad/FLT (Post 638125)
huh?

Sorry I meant JOTD :-( I was interested in trying out his decompiler that he has apparently written and which he mentioned in this thread, because I have been wanting an Amiga decompiler for many years.

phx 22 March 2010 12:32

Does anybody know what the legal status of those reassembled programs is? Are we really allowed to release the source?

I ask because I did a complete reassembly of Giana Sisters, just for fun and to remember the good old times.

It's not just raw reassembler output, but it is readable, with meaningful symbol and function names and a documentation about the format of all the used files and objects. There's quite some weeks of hard work in it.

Before I would ever invest more work into it (for example make it work with a real file system in a multi-tasking environment) it would be good to know about any legal issues...

Retro1234 22 March 2010 21:17

Giana Sisters was never legal anyway and I dont think anyone would care now - upload it;)

phx 23 March 2010 10:24

Ok. I will need some time to get it into a releasable state, though.

TCD 23 March 2010 10:29

Hmm, so that means someone could make a GGS level editor... drool
Please release it phx :great

phx 23 March 2010 13:33

The map format was not analyzed in detail, only as much as it is relevant to the main program. But you will know enough to find the meaning of the rest by experimenting with it.

The level maps of GGS start at track 84 (that's cylinder 42), and each level occupies two tracks. A GGS map consists of three parts.
1. The header
2. The level map, containg 256x20 bytes with a code for each 8x8 block in the level.
3. Several variable sections which define the colors, offsets to the graphics being used, and pixel-precise(!) positions of blocks and objects in the level.

As a teaser, here is a small part of my GGS data-format notes, describing the map format:
---8<---
Map File Format
===============
$0C.B: Map width LSB
$0D.B: Map width MSB
$0E.B: Map height LSB
$0F.B: Map height MSB
$10: Map data
Rest of file contains sections labeled with HEAD, SPAL, SLOB, SLBL, SUNT,
SOBJ, SBLK, SVOR, SKOL and SEND.

SPAL section (PALette):
-----------------------
16 words representing R7G7B7 color codes for COLOR00-COLOR15.

SLBL section (Level Block Location):
------------------------------------
An array with the following records:
$00.W: Block image number (starting with 1, not 0!)
$02.W: Block X coordinate
$04.W: Block Y coordinate (Warning! Cartesian coordinates! Y=0 is Y=159)
A $ffff as image number marks the end of the array.

SBLK section (BLocK image offsets):
-----------------------------------
An array of 32-bit offsets into the block image data memory ($4181e).
Note that a block number 1 will be at position 0 in this array!
Block image data format:
$00.W: Width in words - 1
$02.W: Width in pixels
$04.W: Height
$06: Image data of all 4 planes

SLOB section (Level OBjects):
-----------------------------
An array with the following records:
$00.W: Object image number (starting with 1, 0 will be ignored)
$02.W: Object X coordinate
$04.W: Object Y coordinate (Warning! Cartesian coordinates! Y=0 is Y=159)
A $ffff as image number marks the end of the array.

SOBJ section (OBJect image offsets):
------------------------------------
First longword is $000387ee, which is checked against the first longword in
the map image data.
It follows an array of 32-bit offsets into the map image data memory
($4181e). Note that a image number 1 will be at position 0 in this array!
$00.L: Mask data offset
$04.L: Image bitmap data offset
The mask has the same format as the mask in the Blitter Object Queue.

SUNT section (level UNTergrund block):
--------------------------------------
Defines a single 32-bit offsets into map image data. This 32x32 image will
be used as the background for the whole level, before rendering the rest.
Block image data format:
$00.W: Width in words - 1 (always 1)
$02.W: Width in pixels (always 32)
$04.W: Height (always 32)
$06: Image data of all 4 planes

SKOL section (?):
-----------------
A section terminated by "SVOR" which contains labels for BRUECKE2, DORNEN,
BONUS, BONUS1, FLAMME and HINWEIS, defining coordinates for different types
of animated objects. BRUECKE2 and HINWEIS are not used by the game.
All labeled sections contain an array of the following records:
$00.W: X position in map
$02.W: Y position in map (Warning! Cartesian coordinates!)
A set bit 15 in Y pos. disables the animated object.
The array is terminated by X pos. $ffff.

SVOR section (?):
-----------------
Terminates a SKOL section. Just contains $ffff.
---8<---

jotd 27 March 2010 17:44

another cool thing would be to rewrite the engine and use original level data (and bits of original code to be faithful to the original game)

phx 27 March 2010 22:30

Everything is possible.

Now the game is perfectly reassembled. There is not a single function or data symbol without a meaningful name left. I can run the code through an optimizing assembler, gaining 500 bytes, or change it however I like, and it still works, which means I got everything correct.

Currently I'm using a Makefile to automatically construct an ADF from the code, the data and all the maps, including a small start-up code. Then I copy it to an SD card and test it on my Minimig.

But I figured out the version I reassembled was not perfect. The final level is corrupt. I get a dragon on parts of the title screen. The last diamond to catch is not present, of course.

Was there ever a 100% working Amiga release? I would be interested in map 33 from this disk. In my version not only this map is missing but also the code is explicitely referencing to the first half of the title screen.

jotd 28 March 2010 14:55

Have you tried the whdload version of the game? Maybe you have disassembled a cracked version (you're talking about building an ADF and this game was clearly non dos track)
The whdload version uses original disks, so there's more chance that the final level is OK

PS: nice job with the disassembling. I guess you can make it public, noone cares (except maybe Nintendo :)). Also remember that Turrican III source code has been made public.

thor 28 March 2010 17:32

Is there a playable level 33, maybe it's some leftover data? When I get to the rightmost exit in level 32, this level restarts. When I get to the spot at the bottom between two big blocks, I fall a floor lower with the dragon and the diamond behind, which finishes the game. Tested with SPS 2500, I guess SPS 2945 version is the same.

phx 28 March 2010 19:27

The map with the dragon and the diamond is level 33. There should be a short disk-access when the map is loaded after falling through the floor.
When touching the last diamond a text should appear: "Giana get up, the sun has frightened the night!". In my reassembled version I can see that this text is never printed. So it must have been an early beta... :rolleyes

thor 28 March 2010 19:48

Quote:

Originally Posted by phx (Post 656296)
The map with the dragon and the diamond is level 33.

Ok, since it still says "stage 32" on the screen it wasn't clear.

Quote:

There should be a short disk-access when the map is loaded after falling through the floor.
Correct.

Quote:

When touching the last diamond a text should appear: "Giana get up, the sun has frightened the night!". In my reassembled version I can see that this text is never printed. So it must have been an early beta... :rolleyes
Yes, that text is printed when touching the diamond, then the hiscore list is shown. Did you use a cracked version (which)?

phx 28 March 2010 19:57

The "Red Sector" version.

phx 28 March 2010 21:27

Quote:

Originally Posted by jotd (Post 656222)
Have you tried the whdload version of the game?

It's not easy to get an original GGS disk.

Quote:

PS: nice job with the disassembling. I guess you can make it public, noone cares (except maybe Nintendo :)).
I still doubt that, even after more than 20 years. So when anybody is interested in the source, please contact me privately.

Quote:

Also remember that Turrican III source code has been made public.
Really? Where?

kamelito 29 March 2010 13:07

here:
 
here: http://eab.abime.net/showthread.php?...II+source+code

Now you can send me Giana :)

Quote:

Originally Posted by phx (Post 656342)
It's not easy to get an original GGS disk.

I still doubt that, even after more than 20 years. So when anybody is interested in the source, please contact me privately.

Really? Where?



All times are GMT +2. The time now is 00:00.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.

Page generated in 0.06440 seconds with 12 queries