Jump to content

nanochess

Members
  • Content Count

    6,415
  • Joined

  • Last visited

  • Days Won

    19

Everything posted by nanochess

  1. Play Aardvark for Atari 2600, ROM now available at https://atariage.com/forums/topic/319647-aardvark-rom-release/

     

  2. It is easy to calculate. As the Z80 works at 3.58 mhz, you have 3579545 cycles to work. You should divide this number between 60 (the number of video frames per second on a NTSC console) 3579545 / 60 = 59659 clock cycles per video frame. Each NOP instruction take five cycles so you can execute a total of 11931 NOP instructions before the interrupt is generated again. This page contains the total cycles for each instruction: (use the Timing Z80+M1 column) http://map.grauw.nl/resources/z80instr.php Some games do everything inside the NMI vector, so the main loop is just a jump over itself. Other games only update the VDP while inside the NMI vector, so you must leave enough cycles for the game processing code. I use this kind of logic in my games Princess Quest, Mecha-8, and Mecha-9. And some games only do everything outside of the NMI vector, and use Z80 loops, and don't even synchronize with it.
  3. Enjoy it! 😎 As an interesting side note, this game took 3 years in development because I started it around July 2016. More info https://nanochess.org/aardvark.html
  4. Maybe we need to start sharing the trophy, one year with you, one year with Nathan, one year with me 😄
  5. I was wondering how I didn't took the picture before!
  6. Thank you! This reminds me that I need to take a picture of the award along the game!
  7. I was reading the thread and discovered I had forgot so many things, so I collected everything and made a small article about Aardvark.
  8. I was thinking on Utopia, I remember reading invnut's Utopia Revealed!
  9. Just made IntyColor to support the expanded GRAM by using the -t option. Notice the only mode that can access the 256 GRAM cards is the Color Stack mode. As always the source code is at https://github.com/nanochess/IntyColor Let me show also a tiny example using the cutegirl.bmp file (from my previous demo to test for Tutorvision/Super Pro systems): ./intycolor -b -s0707 -t cutegirl.bmp cutegirl.bas ./intybasic cutegirl.bas cutegirl.asm ./as1600 -o cutegirl cutegirl.asm ./jzintv -z3 -G2 cutegirl For jzintv is very important the uppercase G, otherwise with the lowercase g it tries to load a strange GROM file. IntyColor_v1.2.0.zip cutegirl.bmp
  10. Both Infiltrator and The Pandora's Incident can use the extra sound chip on the ECS. It is indicated in the posts made by the author. It is easy to tell by yourself if you run jzintv with and without ECS support (and you have good ear). We knew Mr. Turtle had voice because the author showed it in the video he made. Also you need to run jzintv with voice support. If the author doesn't tell us, it is not immediately obvious if ECS or voice is used. I remember running Bomb Squad on emulator and never hearing the voice nor missing it because I didn't knew it had voice!
  11. I'm not so powerful 😄 let me ask the league of wizards @Tempest
  12. Wow! Didn't knew about these out of print books. Thanks for the tip!
  13. Just added the Special Prize awarded by Mark/Space Inc. it is for Infiltrator!!! (edited first post accordingly)
  14. It is easier to consider a certain X or Y coordinate over a threshold to confirmate if your sprite is touching the border. For example if using a fractional movement and an imaginary 4 pixel border around with a 16x16 sprite: IF #x < $0400 THEN ' left border exceeded new_room = -1 ELSEIF #x > $9400 THEN ' right border exceeded new_room = 1 ELSEIF #y < $0400 THEN ' top border exceeded new_room = -10 ELSEIF #y > $5400 THEN 'bottom border exceeded new_room = 10 END IF The variable new_room could be zero when the room isn't changing. You need good collision check with walls to avoid passing impossible paths from room to room. Typically the card detection is something like this: #c = #backtab((#y / 256 + 0 ) / 8 * 20 + (#x / 256 + 0) / 8)) ' For top left, the plus zero expression is to adjust the offset if checking other corners, in this case top left When handling a map with multirooms, you need a table of cards to walls. For example: IF collision_room(room * 24 + (#c AND $01f8) / 8 ) <> 0 THEN ' We have a collision Supposing there are only 24 cards per screen. And you'll fill manually the DATA table for collision_room (24 values for each room). The collision handling is highly dependent on the game. For example, if you have speed variables you could make the player to reboot, or simply adjust the X,Y coordinates to be outside the collision.
  15. Modulo is an expensive operation in terms of time. The second half of the code recalculates several things unnecessarily: imap = 0+mX + ((1+mY)%hMAP)*wMAP #i = map(imap) + #j SCREEN #xyrooms,#i + tX , 0 + (9-tY)*20 ,9-tX,1+tY,9 imap = (1+mX)%wMAP + ((1+mY)%hMAP)*wMAP #i = map(imap) + #j SCREEN #xyrooms,#i , 9-tX+(9-tY)*20,9 ,1+tY,9 imap = (2+mX)%wMAP + ((1+mY)%hMAP)*wMAP #i = map(imap) + #j SCREEN #xyrooms,#i ,18-tX+(9-tY)*20,tX+1,1+tY,9 I would do it as: IF mY = hMAP - 1 THEN mY = 0 ELSE mY = mY + 1 imap = mX + mY * wMAP #i = map(imap) + #j SCREEN #xyrooms,#i + tX , 0 + (9-tY)*20 ,9-tX,1+tY,9 IF mX = hMAP - 1 THEN imap = imap - (hMAP - 1) ELSE imap = imap + 1 #i = map(imap) + #j SCREEN #xyrooms,#i , 9-tX+(9-tY)*20,9 ,1+tY,9 IF mX = hMAP - 2 THEN imap = imap - (hMAP - 1) ELSE imap = imap + 1 #i = map(imap) + #j SCREEN #xyrooms,#i ,18-tX+(9-tY)*20,tX+1,1+tY,9
  16. And now it is available the hardcover version of Advanced Game Programming for Intellivision!!! https://www.lulu.com/en/en/shop/oscar-toledo-gutierrez/advanced-game-programming-for-intellivision/hardcover/product-m5p856.html?page=1&pageSize=4
  17. You should have taken advantage of the hidden promotion The printing company never loses. And a few dollars between friends is nothing
  18. Didn't knew about this. I'll give a look. Supposedly I set a price and it is translated automatically. Edit: just revised and Lulu had some strange numbers for the other currencies. I put again the USD price and all changed accordingly. Not sure what happened but indeed the price was lower.
  19. Maybe an instance of the emulator still is running in the background and Windows notices the CFG file is still used. Or you have the CFG file open in Notepad or another application.
  20. I don't know. Took me 3 years to write the second book. Cool! I hope it leverages your day at least a little.
×
×
  • Create New...