PoP1 SEGA Genesis format documentation
Re: PoP1 SEGA Genesis format documentation
If I place a sword object, it doesn't show a sword in-game. Plus, it can be picked up endlessly.
This made me think the sword also has its own object table.
There's only one sword and it's in level 1.
This means, in theory, the table should have 00 01, <4 byte offset>, and then 16 times 00 00 00 00 00 00.
With the <4 byte offset> pointing to the location after the last set of zeros.
However, the attached program that loops through the EU file to find the object table for the sword(s) fails.
Also, the most likely bytes for the sword's Y (6) and X (3) are...
01 40 00 40, with Y = 320 pixels and X = 64 pixels
or
01 7F 00 40, with Y = 383 pixels and X = 64 pixels
...but this too does not give me a hit. There's only one place with these first bytes, and two places with these second bytes, and modifying all these does not impact the appearance/location of the sword.
This made me think the sword also has its own object table.
There's only one sword and it's in level 1.
This means, in theory, the table should have 00 01, <4 byte offset>, and then 16 times 00 00 00 00 00 00.
With the <4 byte offset> pointing to the location after the last set of zeros.
However, the attached program that loops through the EU file to find the object table for the sword(s) fails.
Also, the most likely bytes for the sword's Y (6) and X (3) are...
01 40 00 40, with Y = 320 pixels and X = 64 pixels
or
01 7F 00 40, with Y = 383 pixels and X = 64 pixels
...but this too does not give me a hit. There's only one place with these first bytes, and two places with these second bytes, and modifying all these does not impact the appearance/location of the sword.
- Attachments
-
- sword.c
- (1.6 KiB) Downloaded 104 times
Re: PoP1 SEGA Genesis format documentation
Here's an update. I'm about halfway done.Norbert wrote:To make sure it's not a complete surprise when it arrives, I am actually working on an editor for this port.
I've worked on it, not full-time, for almost 4 weeks; since November 13th.
So, first release in the beginning of January, it looks like.
However, part of me wants to get a release out in 2016, but I don't know if I'll make that.
Maybe a beta release late December. We'll see.
The tiles screen will be (is already) somewhat different from the other editors I've created. I'm using tabs for both the object and the graphics selection, to allow users to create all object+graphics combos possible. As a bonus this tabbed grouping makes it easy to quickly find, for example, all graphics that contain gate slots. Oh, and the tiles screen has a (full-size, 3-tile) preview that updates when hovering over graphics. The rooms screen - "room links" in the other editors - contains, in addition to rescale options, a miniature overview of the level. The enumerate screen - "events" in the other editors - contains an overview of object and room totals, and their (save) statuses. Most of the work for this port is related to properly removing and adding object attributes, because these are stored separately. For legbop I started from scratch while glancing at apoplexy source code, for the new editor (lemdop) I've done nothing but modify and complement legbop's code.
Re: PoP1 SEGA Genesis format documentation
I was trying to find it some days ago, too, with the same (non-)results.Norbert wrote:If I place a sword object, it doesn't show a sword in-game. Plus, it can be picked up endlessly.
This made me think the sword also has its own object table.
There's only one sword and it's in level 1.
This means, in theory, the table should have 00 01, <4 byte offset>, and then 16 times 00 00 00 00 00 00.
With the <4 byte offset> pointing to the location after the last set of zeros.
However, the attached program that loops through the EU file to find the object table for the sword(s) fails.
Although not because added swords are invisible, but because all other objects have an object table, so I felt the sword should also have one.
Now I checked again, and got some interesting results.
The original sword is still displayed even if I remove it from the level. (change 0x0B to 0x02)
I also figured out that room Y-pos must be exactly 0xC0 and room X-pos must be exactly 0x00.
If I change the starting room's coordinates to slightly different values, then the sword won't appear.
I searched for CMP involving 0xC0 and 0x00 and I found one part that affects the sword:
Code: Select all
(USA version)
00026D7C 4a79 00ff 1ec4 TST.W A_00ff1ec4 ; got sword
00026D82 6600 0092 BNE.L B_26e16
00026D86 0c79 0000 00ff 0f48 CMP.W #0x0,A_00ff0f48 ; level number - 1
00026D8E 6600 0158 BNE.L B_26ee8
00026D92 0c79 00c0 00ff 0002 CMP.W #0xc0,A_00ff0002 ; Y coord of room's top edge
00026D9A 6600 014c BNE.L B_26ee8
00026D9E 0c79 0000 00ff 0004 CMP.W #0x0,A_00ff0004 ; X coord of room's left edge
00026DA6 6600 0140 BNE.L B_26ee8
00026DAA 30bc 0009 MOVE.W #0x0009,(A0) ; no difference?
00026DAE 317c 0002 0002 MOVE.W #0x0002,(D_0002,A0) ; no difference?
00026DB4 317c 0177 0004 MOVE.W #0x0177,(D_0004,A0) ; Y coord within level
00026DBA 317c 0059 0006 MOVE.W #0x0059,(D_0006,A0) ; X coord within level
00026DC0 317c 4000 0008 MOVE.W #0x4000,(D_0008,A0) ; sprite flags: palette, flip
00026DC6 317c 0000 000a MOVE.W #0x0000,(D_000a,A0) ; if not 0 then sword is gone
Now the only thing left is that he should not be able to pick it up after he already did that.
The sword is removed here:
Code: Select all
000222FC 4a79 00ff 3dd4 TST.W A_00ff3dd4
00022302 6600 0004 BNE.L B_22308
00022306 4e75 RTS
00022308 13fc 0002 00ff 15f7 MOVE.B #0x0002,A_00ff15f7 ; change a specific location to floor
00022310 41f9 0000 4680 LEA A_00004680,A0
00022316 4eb9 0000 4486 JSR A_00004486
0002231C 4e75 RTS
Address = 0xFF15E0 + Xpos * levelheight + Ypos
In this case, Xpos=2, levelheight=9, Ypos=5: 0xFF15F7 = 0xFF15E0 + 2 * 9 + 5
Additionally, you can make it so that the sword leaves an empty space behind, so the prince will fall through the floor...
(Change the 0002 to 0000 for this one.)
So it seems that the sword is a "special event" in this version?
Re: PoP1 SEGA Genesis format documentation
Hm, it's interesting, all the differences between the various ports.
Re: PoP1 SEGA Genesis format documentation
Here's the same sword stuff, but for the EU version:
Code: Select all
(EU version)
00057576 4A79 00FF 1F7A
0005757C 6600 0092
00057580 0C79 0000 00FF 0FE0
00057588 6600 0158
0005758C 0C79 00C0 00FF 0002
00057594 6600 014C
00057598 0C79 0000 00FF 0004
000575A0 6600 0140
000575A4 30BC 0009
000575A8 317C 0002 0002
000575AE 317C 0177 0004
000575B4 317C 0059 0006
===
000526DC 4A79 00FF 3EB0
000526E2 6600 0004
000526E6 4E75
000526E8 13FC 0002 00FF 1691
000526F0 41F9 0000 4BCC
000526F6 4EB9 0000 49D2
000526FC 4E75
Re: PoP1 SEGA Genesis format documentation
David, are you sure the 0000 is the level number - 1?
Using your findings, I can successfully change the location of the sword and it can also only be picked up once, but all this only works for level 1.
When I try to change the level, the sword does not show up.
Using your findings, I can successfully change the location of the sword and it can also only be picked up once, but all this only works for level 1.
When I try to change the level, the sword does not show up.
Re: PoP1 SEGA Genesis format documentation
Mid-December. Download links for the beta release:Norbert wrote:Maybe a beta release late December. We'll see.
viewtopic.php?f=63&t=3927
-
- Calif
- Posts: 553
- Joined: August 27th, 2011, 2:04 am
Re: PoP1 SEGA Genesis format documentation
Have tested it and seems really, promising, it comes with Eu version, is also possible to edit Us?? Also seems hard to use for menus considering that it does handle levels more similar to snes (background/foreground separated) than Dos..Norbert wrote:Mid-December. Download links for the beta release:Norbert wrote:Maybe a beta release late December. We'll see.
viewtopic.php?f=63&t=3927
Check my Prince in C# https://github.com/salvadorc17/Prince-Monogame
Re: PoP1 SEGA Genesis format documentation
Yes, simply empty the rom/ directory and then put the US ROM file into that directory.salvadorc17 wrote:it comes with Eu version, is also possible to edit Us??
Re: PoP1 SEGA Genesis format documentation
Note that the RAM address is calculated a bit differently:Norbert wrote: Here's the same sword stuff, but for the EU version:
Instead of 0xFF15F7-(2*9+5) = 0xFF15E0, the base address is 0xFF1691-(2*9+5) = 0xFF167A.
Oh, I see in the editor's source that you already figured that out.
It's related to starting level 1 without the sword. (see below)Norbert wrote: David, are you sure the 0000 is the level number - 1?
Using your findings, I can successfully change the location of the sword and it can also only be picked up once, but all this only works for level 1.
When I try to change the level, the sword does not show up.
You see, there is a check before displaying the sword (TST.W A_00ff1ec4, here) that skips the whole thing if the prince already has the sword.
I still don't get why doesn't the code just check the objects map to decide when and where to display the sword.
Code: Select all
Prince starts without sword on level 1.
(USA)
000200B4 0c79 0000 00ff 0f48 CMP.W #0x0,A_00ff0f48 ; level number - 1
000200BC 6700 000a BEQ.L B_200c8
000200C0 33fc 0001 00ff 1ec4 MOVE.W #0x0001,A_00ff1ec4 ; got sword
(Europe)
00050400 33fc 0001 00ff 1f7a MOVE.W #0x0001,A_00ff1f7a ; got sword
00050408 0c79 0000 00ff 0fe0 CMP.W #0x0,A_00ff0fe0 ; level number - 1
00050410 6600 0028 BNE.L B_5043a
00050414 237c 0005 4768 0008 MOVE #0x00054768,(D_0008,A1) ; falling entry?
0005041C 337c 004f 0006 MOVE.W #0x004f,(D_0006,A1)
00050422 33fc 0002 00ff 1f64 MOVE.W #0x0002,A_00ff1f64
0005042A 33fc 000c 00ff 1f6c MOVE.W #0x000c,A_00ff1f6c
00050432 33fc 0000 00ff 1f7a MOVE.W #0x0000,A_00ff1f7a ; got sword
Question: Should I show the disassemblies there as well, or just the offsets and their meanings?
(Maybe the disassemblies would show something like "I know what I'm doing, I'm not just shooting randomly"? )
I made the disassemblies with dasm68, by the way. I originally downloaded it to use on PoP1 for the Mac...
It's a "straight and stupid" disassembler, which means that it disassembles even those parts that are not executable code.
As a result, before I pasted the disassembly into my posts, I sometimes had to fix those instructions that are directly after data areas. At 0x00026D7C for example.
Re: PoP1 SEGA Genesis format documentation
Can an easy hex edit disable this check?David wrote:there is a check before displaying the sword
Maybe a link to this thread?David wrote:Question: Should I show the disassemblies there as well, or just the offsets and their meanings?
I want to comment on the wiki in general. It's too much a single point of failure, in my opinion. I hope you're making local backups of articles you post and update. (I personally see lemdop as a semi backup of your findings.) I do mention your documentation in lemdop's docs/README.txt, but decided not to link to the wiki. Maybe I'm overly cautious, but the Princed website has been hacked in the past - for weeks, without anyone taking action - because WordPress was outdated, and like this forum the wiki is in a fragile position, because nobody is looking after it. It's probably already impossible for new users to register. I'm not going to look into it, I've done enough Princed admin stuff, and you (David) shouldn't have to either, given all your PoP contributions over the years. Plus you are super busy. I think you're mostly just dropping by on Saturday mornings these days. If poirot will allow this forum to eventually go off-line, for whatever reason, maybe we'll all just move back to popuw.com. Who knows. Of course, that probably wouldn't be ideal either. But the wiki, maybe occasionally release PDF documents of content, to allow for easy backups on other websites (popot.org, popuw.com)? Then again, I think you backup 'everything', you still have things from a decade ago.
Re: PoP1 SEGA Genesis format documentation
Er, that's possible, but then the sword remains visible after pickup.Norbert wrote:Can an easy hex edit disable this check?
(USA) At 0x26D82: change 66 00 00 92 to 4E 71 4E 71.
(Europe) At 0x5757C: change 66 00 00 92 to 4E 71 4E 71.
A better option is to change the level where the prince starts without sword, as I wrote above.
But then, does it make sense to put this anywhere other than level 1?
EDIT: Updated the wiki: http://www.princed.org/wiki/SEGA_Genesis_format
Re: PoP1 SEGA Genesis format documentation
(Separate post because it's a different topic. I might even move this elsewhere.)
I also make a backup of all my (and sometimes others') longer posts (and PMs), especially the technical ones.
Or rather, I first write them into a text file, and then copy-paste them into the wiki or the forum.
And I still regret those few things that were interesting (in hindsight?) yet I did not save them.
HDD crashes, broken floppy disks and CDs, disappearing (or just completely redesigned) websites, people removing/closing their accounts...
Yes, I do have a backup of all three format-related wiki articles. (SNES, SEGA Genesis, Game Boy Color)Norbert wrote:I hope you're making local backups of articles you post and update.
I also make a backup of all my (and sometimes others') longer posts (and PMs), especially the technical ones.
Or rather, I first write them into a text file, and then copy-paste them into the wiki or the forum.
*sigh*Norbert wrote:Plus you are super busy. I think you're mostly just dropping by on Saturday mornings these days.
Will Jalal ever re-enable the PoPUW forum? He didn't even post the archive yet...Norbert wrote:If poirot will allow this forum to eventually go off-line, for whatever reason, maybe we'll all just move back to popuw.com.
Exactly...Norbert wrote:Then again, I think you backup 'everything', you still have things from a decade ago.
And I still regret those few things that were interesting (in hindsight?) yet I did not save them.
I have seen various forms of data loss, too...Norbert wrote:Maybe I'm overly cautious, but the Princed website has been hacked in the past
HDD crashes, broken floppy disks and CDs, disappearing (or just completely redesigned) websites, people removing/closing their accounts...
Re: PoP1 SEGA Genesis format documentation
Right.David wrote:A better option is to change the level where the prince starts without sword, as I wrote above.
I noticed that, for the EU version, changing this also changes where the prince has a falling start animation.
Setting it to, for example, level 2 makes the prince semi-fall even though he starts on a tile.
Re: PoP1 SEGA Genesis format documentation
Apoplexy does not display level names for PoP2 DOS and PoP1 SNES, only the names of level types.Norbert wrote:Speaking of names of levels, the four extra levels of the EU version, how will we name them?
Why was it important for the Genesis version?