Jump to content
IGNORED

Prince of Persia


José Pereira

Recommended Posts

Plenty of assemblers can generate code at one address that is intended to run at another.

 

Mac-65: .SET 6

Modern day PC-based ones can do it too.

 

Of course we generally assemble to a file direct these days, so all we're doing on Atari is generating a different load address for the segments involved.

 

I don't see how object code can be written to $13000 - unless Apple has some sort of >16 bit load address system. Naturally we can't generate 6502 code that is intended to execute above $FFFF.

Link to comment
Share on other sites

I'm looking for the ability to write object code above $FFFF, that would be intended for an address below $FFFF.

 

Think of a floppy disk as a linear series of bytes. When the code is assembled, it gets written to it's place on the floppy disk directly, which is an address above $FFFF. When that code is loaded by the RTWS, it then ends up at the correct address below $FFFF.

Link to comment
Share on other sites

ACME supports a 24-bit PC, but it has a syntax that'll make you cringe compared to the others :) DASM does as well I think..

I think there's several others that do it as well.. It's something I requested for KickAss too, but it not happened so far..

That said, it's only a small extra step to output several 64KB blocks and concatenate them as a post-build step.. A few restrictions obviously, but if what I recall of the PoP code having jump tables for all the functions in the 'overlays', it'd be easily workable..

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

"Let's Compare..."

 

That's really interesting! I thought the Sega Genesis was the "best" in terms of the richness of its graphics. Found the C64 version on the second pass through the video -- which to me looks very much like the original Apple II version (but better). The ST version is well-done and acquits the ST nicely. Super Nintendo was very nice, also.

 

-Larry

Link to comment
Share on other sites

I agree with Larry on all counts. I just tried the Super Nintendo version on my xbox (emulator). Very playable. The PC version will always be my favorite because that's the one I played in college (probably should've been studying).

Link to comment
Share on other sites

  • 3 months later...

I got bogged down and briefly revisited this. Had just started figuring out CC65 bank mappings to segments to the virtual disk file. A quick look on 6502.org shows that somebody went ahead and wrote a Merlin compatible assembler! PoP now builds on Apple 2.

 

(all kinds of awesome there)

 

So then, there is now another choice. Rather than get it ported into another assembler, that one can be used to fork an Atari version. Didn't Bill Budge release something he wrote for the 800 and wasn't that in Merlin as well?

  • Like 1
Link to comment
Share on other sites

I've done a couple of C= Plus4 ports and other work involving first translating the source from one target Assembler to another.

 

Not a lot of effort really in many cases - my strategy was to first translate the original source to work with the target Assembler as in generating an identical binary that would match the original, then go from there.

 

In the case of this game, I'd advise to work with whatever assembler is within your comfort zone. Massaging original source code is something that should take anything from half to several hours vs the possible hundreds of hours or more getting something that finally runs on the Atari.

  • Like 1
Link to comment
Share on other sites

to first translate the original source to work with the target Assembler as in generating an identical binary that would match the original

 

How easy or difficult is this? I thought that maybe two Assemblers even with exactly the same code would produce slightly different binary output? Or is this only more true of higher level programming languages?

Link to comment
Share on other sites

How easy or difficult is this? I thought that maybe two Assemblers even with exactly the same code would produce slightly different binary output? Or is this only more true of higher level programming languages?

 

It shouldn't make a difference for everyday things because the assembler is performing a direct translation; for example LDA #$2C is $A9, $2C in memory so every assembler should be outputting those bytes when encountering that code in the source. But things "drift" if one assembler supports illegal opcodes whilst the other doesn't or there's a "quirk" in one about dealing with zeropage locations[1], so shunting code between assemblers can lead to some chasing around to see why the binary isn't quite the same at the far end.

 

[1] The cross assembler i used to use for Commodore 8-bits had an interesting "feature"; putting LDA $FC in the source got you LDA $FC in memory, but assigning a label like COUNTER to $FC and then doing an LDA COUNTER got you LDA $00FC back.

Link to comment
Share on other sites

How about Assemblers like MADS which have some almost high level concepts built into them? Then again, I guess such features are unique and won't be supported by other Assemblers anyway. Pahh, don't even bother answering that! (Too much thinking out loud before thinking properly... one of my faults)

Edited by snicklin
Link to comment
Share on other sites

How about Assemblers like MADS which have some almost high level concepts built into them?Then again, I guess such features are unique and won't be supported by other Assemblers anyway. Pahh, don't even bother answering that! (Too much thinking out loud before thinking properly... one of my faults)

 

Well, it depends on the feature really; i skip back and forth so much that i don't really use those extensions personally (i've got Crimson configured for three assemblers and a BASIC tokeniser right now) but for things like speedcode generators the target code should be the same even if the way the macro appears in the source is different.

Link to comment
Share on other sites

  • 1 year later...

Any code releases?

Is there a critical showstopper? Or is it just lost of interest/energy?

Nothing much on the code side, maps and chars, way or ways of talk between me and two coders but we never started it as it deserves and that is a full-time A8 coding and we all been doing other games that you'll hopefully see very soon :)...

But what a strange thing because one of them did a P.C. program I've been asking him to do for years and after one more call he did it in just two days this last weekend and last night together with other game maps I re-load the Prince's ones again and now I have a tool to finish my part then lets see if any of the others get also time :).

  • Like 1
Link to comment
Share on other sites

I have two other games and must start thinking in something for the ABBUC Contest that the deadline is on 31st of July.

Prince of Persia is for me like Last Ninja and it's on my Top 5. I dream in it/on them that one day they'll be on A8.

Prince needs, coding part a year or more and that is from a coder with really free-time and interest. On my part and what I have in mind, having someone taking it seriously and I'll do my part of the jobs at nights and weekends in one or two months and then I'll do any fixes and changes the coder asks me to...

Maybe whenever you or even me aren't waiting something may start :-P...

Link to comment
Share on other sites

Merlin 32 is now available.02 It can build this Apple 2 code.02 Additionally, the original code has been successfully built into working disk images.

Don't get it, Merlin 32 is what, that emulator for the A8?

And what it does to solve the Apple 2 7bit to A8 8bit?

Humm, but who or where's the files?

I am not a fan of the straight conversion and more the Apple 2 that is based in NTSC Artifacting with that vertical lines, indeed, most of the times it's even more hard to get good result because of Apple's double hi-res gives 4 artifacting colours where's A8 has only 2.

The Apple has double hi-res 560pixels that is if hi-res normal 280 = 40x7bits similar to A8 40x8bits soo there's always a gap/one pixel vertical line missing per each char collumm.

But if it's running we'll see, maybee possible to later put the screen to also bitmap mode 2:1 ratio GR.15... I have here two different ways/gfxs, one for bitmap and the other for charmode and the PMGs guys frames and lights if anyone interested.

Just a 100% port and all that vertical lines don't make me very happy, please see at YouTube the Apple 2 version without NTSC Artifacting in black and white and you'll easilly get my point of view. But that's O.K., don't understand me bad, I'll wait for the release to see.

Soo, when it will be?

:-)

Link to comment
Share on other sites

I'm interested in getting my hands wet on it. I can't promise anything though.

I saw good ideas here and doable graphics, some really nice graphics too!. I don't want to piss anybody off if someone has real running code. If there is no (atari) code, that's a good thing ;-)

 

My available time is variable, last year I released a pair of "big projects" in my free time (17 calendar months total), so a timeframe of several months is not something I would be afraid of. If you want to help fix bugs, that would be great.

 

My initial plan is to take the original source code analysis together with the analysis made by MrSID (C64 port). Correct me if I am wrong, but it seems that he didn't release his source code, anyway there is invaluable help in his development blog.

 

Then I would take some ideas from this topic.

 

Well may be I'm too fool/innocent but if nobody is working on it, I see no problem.

  • Like 1
Link to comment
Share on other sites

Merlin was also used to assemble Atari games, written on an Apple computer.

 

Personally, I would setup on Merlin and perform a build on Apple. Make sure it works.

 

Now you've got a base.

 

Setup some test programs on Atari, make some graphics / sound decisions, and then take a chunk of the PoP code and assemble it for Atari.

 

When I was more motivated to work on this, and I actually did have some time, I got stuck on assembler issues. I really wanted a fresh build of PoP on Apple.

 

Now that's possible.

 

http://forum.6502.org/viewtopic.php?f=2&t=2223&start=30#p25628

 

https://github.com/adamgreen/snapNcrackle

 

https://github.com/adamgreen/Prince-of-Persia-Apple-II/blob/build/Notes/pop-build.creole

 

That build was done by writing an assembler to do the key things Merlin would do. Not sure using it for Atari would make sense, but Merlin 32 will understand nearly all of this code now.

 

And that one can build games for Atari. Bill Budge did this, among others. Write Apple version, then modify for Atari. (which is why some Apple games never really used Atari specific resources....)

 

BTW, that code does include the level editor. You could build that, get it modified for 8 pixels / byte instead of 7, generate new level tiles, and then carry on from there. Doing that will require a basic graphics screen setup for ANTIC, and rewriting the draw routines. Apple draw routines are complicated because the damn screen is complicated. You get some code space for free doing this.

 

The other big part of the editor is the disk I/O routines. A simple layer to translate tracks and sectors to blocks would be needed at a minimum. That way all the many disk calls still make sense.

 

You can find Merlin here: http://brutaldeluxe.fr/products/crossdevtools/merlin/

 

PoP is a high res game. The only double high res is in the title screens. Might only be one screen actually. Apple's do generate 4 artifact colors, where Ataris only generate two. But those artifact colors are always on byte boundaries.

 

This makes PoP a 6 color game. PITA

 

Lots of ideas in this thread to address that. :)

 

Finally, here is a code review. This is NICE! It didn't exist before. Reading it now.

Edited by potatohead
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...