-
Posts
12 -
Joined
-
Last visited
About NicoLarve
- Birthday 01/04/1979
Contact / Social Media
- Website
Profile Information
-
Gender
Male
-
Location
France
NicoLarve's Achievements
Space Invader (2/9)
0
Reputation
-
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 !
-
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 ?
-
Session 9: 6502 and DASM - Assembling the Basics
NicoLarve replied to Andrew Davie's topic in 2600 Programming For Newbies
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. -
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 !
-
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.
-
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)
-
Session 9: 6502 and DASM - Assembling the Basics
NicoLarve replied to Andrew Davie's topic in 2600 Programming For Newbies
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). -
Session 9: 6502 and DASM - Assembling the Basics
NicoLarve replied to Andrew Davie's topic in 2600 Programming For Newbies
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. -
Session 9: 6502 and DASM - Assembling the Basics
NicoLarve replied to Andrew Davie's topic in 2600 Programming For Newbies
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 ?! -
Session 9: 6502 and DASM - Assembling the Basics
NicoLarve replied to Andrew Davie's topic in 2600 Programming For Newbies
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. -
Session 9: 6502 and DASM - Assembling the Basics
NicoLarve replied to Andrew Davie's topic in 2600 Programming For Newbies
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 ? -
Session 9: 6502 and DASM - Assembling the Basics
NicoLarve replied to Andrew Davie's topic in 2600 Programming For Newbies
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.