Jump to content

NicoLarve

Members
  • Posts

    12
  • Joined

  • Last visited

About NicoLarve

  • Birthday 01/04/1979

Contact / Social Media

Profile Information

  • Gender
    Male
  • Location
    France

NicoLarve's Achievements

Space Invader

Space Invader (2/9)

0

Reputation

  1. The scoring system in River Raid uses 12 bytes per player: half of them are used for absolute addressing and the other half consist in digits offsets to point to digits graphics directly.How would you convert this mechanism into a BCD based one ? Does it consists in a conversion from 3 BCD bytes to 12 Hex (the temp you described below) ones just before displaying the digits ? Do you mean there's so enough free CPU cycles in River Raid to call a subroutine (spare too much time isn't it) ? I didn't analyzed the code enough to answer this but the CPU seems to be really busy in this game !
  2. I really thank you two guys ! I was absent these pasts months because of PhD thesis... that will end in this month... Too much job here ! Since my last post, I learned several things on DASM. I think I won't need to use the bankswitiching trick. In fact, the main problem I encounter for the moment is the amount free RAM (a few bytes, maybe 2 or 3 are free in the original game !). One or two of them are always zeros, so I freed them. But I have good plans to do the job ! I will seriously consider removing the screen saver and/or the logo stuff in my project. As I saw in the code, displaying more digits would be really hard or impossible to do: the code is so compact (both in bytes used and in execution timing !) and at the same time seems to use (as far as I can understand) every free pointers (the famous 6 sprites ?) to display the 5+1 digits (the LSB digit zero is always zero !). As Nukey Shay said, this is the same on the live + logo line & should be the same on the fuel line... no more "place" ! What is the 30Hz flicker ? Does it induce complications to run on real hardware ? I'll be programming back again on it soon. Hope you'll be there again ! PS: I work exclusively under Linux platforms, but I use a win32 DASM version thanks to wine. I'd like to build a DASM soft package for GNU/Linux Debian distros but DASM sources seems buggy for Linux versions... Do you know something interesting about this issue ?
  3. You're welcome ! I began learning 2600 assembly a few month ago, but I already understand how to create an entire frame (creating a "kernel") and I displayed some things on screen (digits using the playfield, rainbows, etc.)... this is the simple beginning, but here we are ! Good luck to you, and I advise you to read all of these sessions (don't skip anything) and also the "Stella programmer guide" (google for it...). I've first read some parts of this book: "Using 6502 Assembly Language" by Randy Hyde's. But this can only help you to understand ASM, not the Atari hardware which is the most important thing to understand.
  4. No matter with that for the moment: I'm reading "2600 programming for newbies", it's an excellent reading ! And I think I'm not yet ready to be helped ! This thread was initiated to first inform people about this hack, then I'll ask for help. Now, I understand the principle of a kernel, WSYNC, VBLANK... and 6502 assembly instructions seems really easy to understand. All I know for the moment is that I have to inspire myself from the scoring system of River Raid and "duplicate it" in order to count the destroyed bridges. I also know that River Raid was really optimized to fit in the 4k... and I think this add on will lead to obligatorily generate a bigger rom than a 4k... We'll see, I'm very motivated and I love to learn assembly & '2600 hardware ! Thanks for your encouragements !
  5. Maybe I first have to read "2600 Programming For Newbies" instead of waiting for help now... I've just printed it. PS: If anyone is interested in a booklet PDF version (two pages per A4 page, duplex, ecological version !) of "2600 Programming For Newbies", I can put it anywhere accessible for others.
  6. Hi, As I said in this post, I'd like to add a passed bridge counter to River Raid (i.e. a kinf of level counter). I plan to put it on the bottom right of the screen (opposite place to the lives counter): I don't have any real experience in asm programming (even if I did some little thing at school), but I know really well C/C++ and some other languages. I first obtained the River Raid asm file from Thomas Jentzsch which is well commented (thank you !). Then I began read some docs: Randy Hyde's 1981 book "Using 6502 Assembly Language" (for apple II): this is a great book !!! Stella programmer's guide (mostly talk about the TIA and the PIA) and of course the River Raid source code commented by T.J. I know that I have to read "2600 Programming For Newbies"...! Work in progress ! I first tried to understand the code and add some dummy code, modify sprites, etc. Then I compiled the source of River Raid with just one more line of code (a dummy LDA for example), the bin file becomes 4352 bytes long: ls -l -rw-rw-r-- 1 NicoLarve NicoLarve 4352 fév 13 15:05 RiverRaid-mod.bin But I only added 3 bytes of code... Moreover, the ROM doesn't work anymore (testing with Linux/Stella) ! As far as I know, River Raid was really optimized to fit in the 4kB cartridge (thanks to Miss Shaw !). So, what happens if I exceed 4kB of code ? Is there any problem with DASM ? So my main question would be: "Can I expect to compile River Raid to a bigger file (8kB ?), and how ?" PS: For the moment, I use a DOS version of DASM (DASM V2.20.07) run with wine under Linux (of course, it works very well when to compile the original source code of River Raid)
  7. OK, now I feel better for the upcoming things I want to do ! Thank you ! Do you think that displaying the number of exploded bridges would be a hard task ? In fact, a few weeks ago, a friend of mine introduced me to River Raid, since we began a high score competition. But the score is not everything in River Raid, since levels (bridges) can also demonstrate how long you can stay alive. That' why I had this idea... I also like to do such crazy things ! I think I will first try to understand the scoring system (and the use of graphic pointers instead of a score variable).
  8. It's OK with the first tips about TIA_BASE_READ_ADDRESS, with a MSDOS DASM version ! Great ! DASM reported some error, but the game is working: The second tip should help me to compile the game with a Linux dasm version, I'll try it.
  9. I've tried every DOS version I could, I always have the same problems. I've tested to compile it under a Windows 2k, same problem (the bin files always have the same MD5SUM). Don't know what to do, and I really wonder how do you do people ?!
  10. OK, I got a really interesting thing here: I did an hexdump on both the original River Raid rom (on the left), and the one I compiled (on the right): Look at this: some MSB half-bytes (but not all of them) "0x0n" becomes "0xdn": (click here if you have problems to read the image) So, I'm not an expert, but this could be due to the unsigned/signed mistake, isn't it ? This one was compiled using "DASM Assembler - Version 2.20.02". PS: the link to "DASM Assembler - Version 2.12.04" is broken on the DASM web page.
  11. Thank you for answering me ! I copied/paste the wrong shell output... I have vcs.h and with it, it is still the same without the warning line ! Is there an easy way to correct DASM for this unsigned int issue ? Version 2.20.09 (both dasm.linux-i386-elf-static & dasm.linux-i386-elf-glibc22 Linux executables): $ dasm.linux-i386-elf-static RiverRaid.asm -f3 -otest.bin DASM V2.20.09, Macro Assembler (C)1988-2003 RiverRaid.asm (1265): error: Value in 'and #~PATROL_FLAG' must be <$100. RiverRaid.asm (1316): error: Value in 'and #~PF_COLLIDE_FLAG' must be <$100. RiverRaid.asm (1512): error: Value in 'lda #-1' must be <$100. RiverRaid.asm (2020): error: Value in 'lda #-1' must be <$100. Unrecoverable error(s) in pass, aborting assembly! Complete. I just tried the DOS version 2.20.7, I got the same problem: the plane explodes immediately. Here is a link to the ROM a compiled, if any one want to test it: http://gravytrain.free.fr/atari2600/rivertjnb.bin I'm still trying older versions... Which version do you use ?
  12. Hi, I started yesterday to hack Atari 2600 games: I'm planning to add a level counter (number of passed/exploded bridges) to River Raid. Thomas Jentzsch sent me his River Raid ASM source code (great job isn't it ?). I recompiled it with dasm. Then I tested it with Stella and it started correctly: I can start a party by pressing reset or choose the number of players, etc. But at the beginning of the game, when I press a button to move or the fire one the plane explodes immediately ! I think something goes wrong during the compilation, but I don't know what... But the most important issue could be this: the only one version of dasm that succeed in compiling your source code is dasm 2.12.04 for Windows Console (i.e. for win32, and not for msdos). Because I don't own a Windows license, I used it with Wine (Windows API emulator) to launch dasm under Linux, that's how I compiled the code from Thomas. I tested about 5 or 6 different versions of dasm, but this one is the only one who reached the end of the compilation process with a kind of "success". It's so sad because I already started to test some simple hacks within the code, but I can really test it...! It just want to get it working good ! Also, note that with Linux versions of dasm (from http://www.atari2600.org/DASM/), I got the following errors: $ dasm.linux-i386-elf-static RiverRaid.asm -f3 -otest.bin DASM V2.20.09, Macro Assembler (C)1988-2003 Warning: Unable to open 'vcs.h' RiverRaid.asm (1265): error: Value in 'and #~PATROL_FLAG' must be <$100. RiverRaid.asm (1316): error: Value in 'and #~PF_COLLIDE_FLAG' must be <$100. RiverRaid.asm (1512): error: Value in 'lda #-1' must be <$100. RiverRaid.asm (2020): error: Value in 'lda #-1' must be <$100. Unrecoverable error(s) in pass, aborting assembly! Complete. Does any one have an idea about these issues ? Does anyone use dasm under a Linux PC and compile games with success ? Thanks ! Nicolas.
×
×
  • Create New...