Rybags Posted March 17, 2013 Share Posted March 17, 2013 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. Quote Link to comment Share on other sites More sharing options...
potatohead Posted March 18, 2013 Share Posted March 18, 2013 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. Quote Link to comment Share on other sites More sharing options...
andym00 Posted March 18, 2013 Share Posted March 18, 2013 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.. 1 Quote Link to comment Share on other sites More sharing options...
GroovyBee Posted March 18, 2013 Share Posted March 18, 2013 I'm looking for the ability to write object code above $FFFF, that would be intended for an address below $FFFF. The linker in the CC65 package can do that. 1 Quote Link to comment Share on other sites More sharing options...
w1k Posted April 2, 2013 Share Posted April 2, 2013 lets compare: 1 Quote Link to comment Share on other sites More sharing options...
+Larry Posted April 3, 2013 Share Posted April 3, 2013 "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 Quote Link to comment Share on other sites More sharing options...
Fres Posted April 3, 2013 Share Posted April 3, 2013 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). Quote Link to comment Share on other sites More sharing options...
potatohead Posted August 3, 2013 Share Posted August 3, 2013 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? 1 Quote Link to comment Share on other sites More sharing options...
Rybags Posted August 3, 2013 Share Posted August 3, 2013 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. 1 Quote Link to comment Share on other sites More sharing options...
snicklin Posted August 3, 2013 Share Posted August 3, 2013 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? Quote Link to comment Share on other sites More sharing options...
The Usotsuki Posted August 3, 2013 Share Posted August 3, 2013 (edited) Shouldn't be true of assemblers. Certainly not of 6502 (I have heard it's true of 8088). Edited August 3, 2013 by The Usotsuki Quote Link to comment Share on other sites More sharing options...
TMR Posted August 3, 2013 Share Posted August 3, 2013 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. Quote Link to comment Share on other sites More sharing options...
snicklin Posted August 3, 2013 Share Posted August 3, 2013 (edited) 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 August 3, 2013 by snicklin Quote Link to comment Share on other sites More sharing options...
TMR Posted August 3, 2013 Share Posted August 3, 2013 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. Quote Link to comment Share on other sites More sharing options...
Franco Catrin Posted April 6, 2015 Share Posted April 6, 2015 Hi guys! This is my first post :-) Any advances in this project? Quote Link to comment Share on other sites More sharing options...
José Pereira Posted April 6, 2015 Author Share Posted April 6, 2015 Sadly no, at least from and who was with me. Quote Link to comment Share on other sites More sharing options...
Franco Catrin Posted April 6, 2015 Share Posted April 6, 2015 Any code releases? Is there a critical showstopper? Or is it just lost of interest/energy? Quote Link to comment Share on other sites More sharing options...
José Pereira Posted April 6, 2015 Author Share Posted April 6, 2015 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 . 1 Quote Link to comment Share on other sites More sharing options...
Franco Catrin Posted April 6, 2015 Share Posted April 6, 2015 So, for what I can tell, you will get back to the project now? Quote Link to comment Share on other sites More sharing options...
José Pereira Posted April 6, 2015 Author Share Posted April 6, 2015 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... Quote Link to comment Share on other sites More sharing options...
potatohead Posted April 6, 2015 Share Posted April 6, 2015 Merlin 32 is now available. It can build this Apple 2 code. Additionally, the original code has been successfully built into working disk images. Quote Link to comment Share on other sites More sharing options...
José Pereira Posted April 6, 2015 Author Share Posted April 6, 2015 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? :-) Quote Link to comment Share on other sites More sharing options...
Franco Catrin Posted April 6, 2015 Share Posted April 6, 2015 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. 1 Quote Link to comment Share on other sites More sharing options...
The Usotsuki Posted April 6, 2015 Share Posted April 6, 2015 Merlin 32 is a cross-assembler compatible with the native assembler that was used originally to build the game on the Apple //e. Quote Link to comment Share on other sites More sharing options...
potatohead Posted April 7, 2015 Share Posted April 7, 2015 (edited) 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 April 7, 2015 by potatohead Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.