Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by NRV

  1. Yep, in fact the NTSC version is the "lead" version x) .. you could say is the better one just because of the frame rate (60 vs 50 in PAL). I did adjust every color, the speeds of the ball, enemies, the falling bonus, the pad control, to be almost the same in both versions, so the difficulty of the game is almost equal. The only details that are a little different are the sounds and the speed of some animations.. there is no much you can do to have the same animation speed when every frame take so little time.
  2. Well, time to let the baby go.. pad open.zip The source is now included, so it does a little more sense that this is in the programming forum x) (Mads assembler, as always). Also.. doing changes, using other songs, adding levels, using this as the base for another game.. is all fair game (I only hope if someone do some improvements, that he share his changes, to add them to the "official" version sometime ) The NTSC and PAL executables are in the xex folder by the way. Disclaimer: the source is commented in most parts, but keep in mind that the first version of this was like 20 years ago, so the style of the programmer changed a lot through the years . There is more info about the game in the first post and through the thread, for those that are new to it. Changelog resume: (version 1.82) --> New game mode (the "old" one with 3 difficulties is still there): - added new game mode "extra" (changed option name to "Game mode"), with a different level sequence (instead of a "tree" is more like Arkanoid 2, where you have a left and right version for every level, except the first one, so now there are 14 levels to end the game) - changed balance and difficulty of some levels, removed one level and added a new one in the "extra" game mode - changed some brick colors in some levels --> Miker song! (many thanks.. inclusive if you don't like it that much ): - integrated RMT code and added "4x" song from Miker (the first one for him I believe) - new vcount system to play RMT music with "4x" updates (it plays the song at the same speed in PAL and NTSC, without the need to drop music steps) - added a fade out to the song after starting a game - added paddle controller angles 25% and 75% - better handling of a problem when selecting paddles with a mouse connected (but still exists in some degree) - added colors and changed some things in the tittle screen - fixed lives display bug when ending the game with more than 3 balls - changed some sounds from 15Khz to 64Khz (to be able to add some new ones) (version 1.83) --> Better control, more friendly: - added 2 more angles to the pad, for a smoother control of the ball direction - changed default mouse max step to 2 (for a better control speed) - changed default starting speed of the ball in casual and extra modes (slower) --> Enemies!: - added enemy code for logic states, creation, destruction, movement and animation - put enemy code and data behind define blocks (USE_ENEMY_CODE) - added different behaviors for the 3 types of enemies (zones of movement, collision reaction against balls, avoid/follow player, hover time, probabilities) - added new sound for enemy destruction - added rule for the enemies hit, when using the "X" powerup (no deflection) - added rule so enemies don't appear until the level has started (the ball is in play) - changed some level colors to aid with enemies visibility - added "Fast" powerup, to increase the ball speed (mostly a one to avoid, except if you want more score, to speedup the game or to recover the normal pad size) - added error message when trying NTSC or PAL version in the incorrect system - changed max ball hard hits to 100 (a feature used to avoid that the ball get in an infinite loop without hitting the pad) - changed a little pad colors My only regret with the enemies is that sometimes visibility of them is a little compromised, because they move over the bricks. To fix this (and to have more than one enemy active) I should change my PM usage for char animations (maybe for the 3 balls, the pad and the falling bonus) and then use the free PM for the enemies. As before, I have tested this only in Altirra (use a mouse and fullscreen for the better experience!), so any feedback from users in real machines is welcome. Regards! (Next I want to put a platformer game engine (plus source) that I did some years ago, but first I want to add a couple of missing features.. and at my current rate of work that probably would be in a pair of months x) )
  3. What? you mean that a small change did give you the best snow effect, just in time for the season and the last demos of the year!? That sounds too suspicious man x) Talking seriously, you should add some static scenery, like a house or something, but with more colors (if that's possible) and maybe with some moving objects (that clear out the accumulated snow.. or just "melt" it with time ). If that is too much work, another nice idea could be to do a classic scroller where the falling snow gets attached to the moving letters (but can keep falling). Bonus points for adding some kind of wind effect that moves the "snow" while falling.. Also, adding the real song should not take you more than like half an hour the first time, is pretty easy (if not just ask for help). Regards.
  4. The last versions show a small row of "one pixel noise" at the end of every line in the original ProjectM 2.0 demo (I downloaded it from the original thread just to be sure that is not a local problem). So is this the correct behavior or some small bug? I remember that at some point you talked about a small one cycle difference between some machines, but don't know if that has something to do with this. Regards.
  5. I have never used it for this, but: http://mads.atari8.info/mads_eng.html#16bit
  6. Thanks, I'm working on it. As I said, I had a version with some improvements that I didn't release and I have done some more fixes and improvements the last weeks. I want to publish also the source code. Right now I'm thinking about adding some simple enemies or not, before posting the next version (but that would take more time.. is not difficult to do the code, but creating some good behaviors and the graphics and animations take me more time than a real artist x) ). By the way, the code have some small research that I did about Arkanoid 1, 2 and Tournament, because I took and mixed elements from them. There is info about those 3 here: http://strategywiki.org/w/index.php?title=Category:Games&pagefrom=A Didn't use: x)
  7. I would add to your design the possibility to have two different color registers changed by DLI's (I did that with my own game). Also you should look at the arcade "color design", I think is a better model than the home versions, for example I like more my version of this level: original: adapted: I don't like much the idea of straight ports of these games (when you can have inspiration from all the arkanoids and add some new interesting concepts), but I understand that some people prefer the classic experience. (Other idea that was discussed before was using gr.8 .. limited in color but with very smooth movement of the balls and enemies)
  8. Yep, the only thing that I had read about that would be this: http://atariage.com/forums/topic/134949-advance-orders-for-cmi08-ps2-mouse-interface/?do=findComment&comment=1919221 Wasn't a cartridge with a usb port also?
  9. If you are moving the car horizontally the artifacting should look like tearing, if you are only moving up or down the artifacting should look like the sprite expands or shrink vertically. Do you have all your code in assembler? Are you using some form of screen syncronization (to know that you only do one logic step per frame)? If not when you add more code/logic to your program the speed of everything is going to change.. Normally you should draw the graphics outside the screen draw time (or in a way that the electron beam doesn't catch you x) ). You could do that using a VBI or DLI. Also you could use an easy check for the value in VCOUNT, like this: lda #100 ; sync draw to this scan line position b1 cmp VCOUNT bne b1 And then draw your sprites. You shouldn't have more than one of those checks per frame. Also remember that with this you can waste a lot of useful time, just waiting to get to that line .. is not the ideal method. A DLI or VBI is a better one, most of the time. If you didn't have your program already in sync with the screen draws, then probably your code is going to be "slower" now (but you should do this at some point anyway). The advice to erase the previous data is a good one, if not you should add more blank lines to your sprite data if you increase the Y speed of your cars.
  10. If I think it better I probably would try to use the 3 players (that I'm using for the balls) for the enemies (maybe using one missile with each one to give more color). With that you can use the char - software sprites for the balls (and maybe have 4 o 5 balls sometimes), and that should not take much frame time (you can use pre compiled sprite methods with sprites that small ..). Using 32 bytes wide is not really required, I don't believe that you are going to be that much limited about frame time with this kind of game. I forgot to mention that the last posted version of my Pad game doesn't have the enemies. I started working on them but didn't finished them at that time (that was the moment that I stopped working in most of my projects). The idea was to use the same player that the paddle was using, to generate 3 enemies at different heights in the screen, and also use 3 missiles for every enemy to give them more color: The enemies will never cross the paddle height in this case (the ufo like sprite is the enemy in that picture). I only had one enemy active moving from left to right with the ball collision. I still needed the code to split the enemies at different heights and some different types of enemies (graphics, animations and behavior code). I say this because I will clean my last version to comment this enemy test and try to post it soon, with the full source code and data if you are interested to modify it or test some ideas. It have some other improvements (Miker's music!, other input methods..) and I have been sitting on it too much time without doing nothing x) About the difficulty.. try setting the options of difficulty or the mouse accel step. Also I remember that Altirra had a mouse sensitivity option, I need to find it again. I suppose that the sensitivity of your PC mouse is also a factor. I could never test this in a real Atari with an Atari or Amiga mouse so I know it could be too hard in a real machine yet. (Maybe some of this options are only in my last version, so try to wait for that version if nothing works x) )
  11. Well .. you have a better example to analyze (imho ) The 3 balls, the falling bonus, the paddle and the enemies all use players and missiles just because is easier that way.. Using chars make a little more difficult to use them for balls (you need 4 free chars for every ball), but I already use the white color so it is possible.. Yep, for collisions of balls with walls / paddles is just better to compare some limit positions. For balls against bricks is just simple math.. I just divide the ball total movement in a frame into steps smaller than the size of a brick (in the case that the ball is going too fast). For collisions between balls against enemies and the paddle against the falling bonus it could be useful to use the collision registers (I think I did it like that), but is not absolutely necessary.
  12. A little offtopic.. Why is necessary the use of "sty stimer" in this case? And your "asl irqen" replace a sequence of the type: lda #0 sta irqen lda #4 sta irqen ?? Regards.
  13. NRV


    From what I know you can run some emulators that are not in the store, like a version of Mame... There is more info in the official forums x) http://ouyaforum.com/showthread.php?2189-Mame-on-ouya/page11&s=741dade4924108ffc57ebb6fa3cd2432 http://dayoftheouya.com/a-list-of-all-known-emulators-for-ouya/
  14. Here you have some oooold examples of software sprites in gr.7: http://atariage.com/forums/topic/108283-more-software-sprites/ http://www.atariage.com/forums/topic/119962-why-are-my-shape-tables-flickering/page__view__findpost__p__1453933 (the centipede demo runs better in PAL emulation, there is some slowdown in NTSC) All the code is included (mads assembler with heavy usage of macros). These are examples of very fast routines, but they use a lot of memory (a lot of unrolled code).. I suppose that the ultimate example in this line of thinking would be the Space Harrier game from Sheddy (you can also look for the code in this forum).
  15. Do you recommend some specific Eclipse runtime binary with this update? I have downloaded the x86 64bit versions: 4.2.2, 4.3, 4.3.1RC4 and 4.4M1
  16. By a programmer spoiled by mads: ; Display list values DL_LMS_MASK = %01000000 DL_JVB = 65 DL_BLANK_8 = 112 ; Basic graphic modes GM_CHAR_G0 = 2 ; 2 colors, 40x24, 960b, 40xline, 8 scanlines GM_CHAR_G1 = 6 ; 4 colors, 20x24, 480b, 40xline, 8 scanlines GM_CHAR_G2 = 7 ; 4 colors, 20x12, 240b, 20xline, 16 scanlines ; display list hlist :8 .byte DL_BLANK_8 .byte GM_CHAR_G1+DL_LMS_MASK .word line1 :4 .byte DL_BLANK_8 .byte GM_CHAR_G2+DL_LMS_MASK .word line2 .byte DL_BLANK_8 .byte GM_CHAR_G0+DL_LMS_MASK .word line3 :4 .byte DL_BLANK_8 .byte GM_CHAR_G1+DL_LMS_MASK .word line4 .byte DL_JVB .word hlist And could be better with macros x)
  17. I was thinking in this one: http://atariage.com/...-file-segments/ Also for the future maybe you would like to read these ones: http://atariage.com/...oss-assembling/ http://atariage.com/...best-practices/ Yep, for bigger levels any kind of compression could be useful, then you can depack all before starting a new level, or construct the level dinamically when you move through it.
  18. Totally sane.. have more confidence x) There are a couple of posts about binary files near here that can explain better how to configure your program, to load different sections of the file in different areas of memory. So, you could made the .byte data load in the area that you need it. You could also continue loading from disk the data that you need, or to put another example, if you want to write a line to screen you could point the display list to your data, instead of moving all those bytes. But, you should stop worrying about these details for now.. is pretty common to have a lot of different data that you need to move to a specific area or buffer in memory, like with printing text to the screen using OS routines, or moving the data of a game level to a default buffer, etc. Losing 20 or 30 bytes is nothing important for now
  19. Nice one "Split-Man", I suppose if you are going to take all the cycles of the line is better doing it with style
  20. By the way... I'm going to assume that using negative numbers and sometimes doing an add or a subtract is what is confusing you about knowing when you really "added" something or not. If that is the case, then you should test the number coming from your sine tables (I suppose your offset is always positive) with the BMI instruction, to see if it is negative or not. Then: - if the number is positive and you did a ADC, then use the method for add - if the number is positive and you did a SBC, then use the method for subtract - if the number is negative and you did a ADC, then use the method for subtract - if the number is negative and you did a SBC, then use the method for add That should do (if you don't want to change your code so the sin tables only use positive numbers)
  21. You say that, but you could have posted your tables also What he said x) I was going to ask if is just (sin1 + sin2 + offset) or if you add that to another value. If is like MaPa said it would be a good idea (if possible) to transform the range of the sin tables to be always positive. Also remember that after the "lda table,x" you should exit or jump over the next "lda table+86,x" x) To MaPa: when doing the "tb2" path your x register could be from 0 to 191 (assuming offset from 0 to 255), if you add 86 to the start of the table then you get a max possible index of 277, so your table should be of size 278.
  22. Arrrgh.. I still don't get your problem x) I think you fail to answer the important questions, for one what is the range of the numbers that you are adding or subtracting? from 0 to what? With this I still don't see the problem.. if you just added something you use the method that I put for "add", if you subtract something you use the other one.. Why should you need to do that? if you just added something treat it like and add! (and viceversa) Come on Heaven, help us to help you (and the MaPa solution is a very good one if the numbers you are adding or subtracting are in the range 0-43)
  23. You lost me there (I should be sleeping) Why do you not now if you are adding or subtracting a value? I mean... if you just did "adc value" you were adding, if you did "sbc value" you were subtracting.. (in your code I see that you use adc cloc or sbc cloc). Or are you just adding values that can be positive or negative? (255 for -1 for example)
  24. I suppose is already clear, but: - if you add something to your value you need to check if the result is greater or equal to 170, and in that case SUBSTRACT 170 - if you substract something to your value you need to check if the result is below 0, and in that case ADD 170 ... there is no "one magic table".. but you can have two tables, one for the case you just added something to your value, and the other for the case you just substracted something (if you don't mind losing 512 bytes for this... or less, if you compare with 170 before using the tables). ; if you add something to your value in "A" clc adc #something bcs value_over_170 cmp #170 bcc exit1 value_over_170 sbc #170 ; the carry is already set! exit1 ... ; if you substract something to your value in "A" sec sbc #something bcs exit2 value_below_0 adc #170 ; the carry is already clear! exit2 ... (by the way.. if the value "something" is already greater or equal to 170, I would substract 170 from it before using this routines, if not I believe you need more code) (also I'm assuming that your value in "A" is already in the range 0 - 169 !!) With tables: ; add: clc adc something ; value already normalized! (between 0-169) bcc version2 ; the result was not greater than 255, use another table tax lda TabMod170AdcVersion1,x bcs continue ; always jump! tax lda TabMod170AdcVersion2,x continue ... ; substract: sec sbc something ; value already normalized!(between 0-169) tax lda TabMod170SbcVersion,x Well they were 3 tables, it was more complex than I was expecting.. shame on you Heaven! But I suppose we can combine all tables into a big one.. let's see.. TabMod170SbcVersion --> 256 byte values: [84-169], [0-169] TabMod170AdcVersion1 --> 256 byte values: [86-169], [0-169],[0-1] TabMod170AdcVersion2 --> 256 byte values: [0-169], [0-85] Yep.. is easy to combine them in one table of 86+170+86 bytes (but you lose some cycles because of the page boundaries crossed).. homework (and yep.. probably is better to just use the "without tables" version of this routines, at least the one for "adding") (I didn't check this too much, there could be errors!)
  25. Mine: ;================================================================================ ; System equates, Atari XL + mads [NRV 2009] ;================================================================================ ;---------------------------------------- ; GTIA: ;---------------------------------------- M0PF = $D000 ; read only M1PF = $D001 ; read only M2PF = $D002 ; read only M3PF = $D003 ; read only P0PF = $D004 ; read only P1PF = $D005 ; read only P2PF = $D006 ; read only P3PF = $D007 ; read only M0PL = $D008 ; read only M1PL = $D009 ; read only M2PL = $D00A ; read only M3PL = $D00B ; read only P0PL = $D00C ; read only P1PL = $D00D ; read only P2PL = $D00E ; read only P3PL = $D00F ; read only TRIG0 = $D010 ; read only TRIG1 = $D011 ; read only TRIG2 = $D012 ; read only TRIG3 = $D013 ; read only PAL = $D014 ; read only HPOSP0 = $D000 ; write only HPOSP1 = $D001 ; write only HPOSP2 = $D002 ; write only HPOSP3 = $D003 ; write only HPOSM0 = $D004 ; write only HPOSM1 = $D005 ; write only HPOSM2 = $D006 ; write only HPOSM3 = $D007 ; write only SIZEP0 = $D008 ; write only SIZEP1 = $D009 ; write only SIZEP2 = $D00A ; write only SIZEP3 = $D00B ; write only SIZEM = $D00C ; write only GRAFP0 = $D00D ; write only GRAFP1 = $D00E ; write only GRAFP2 = $D00F ; write only GRAFP3 = $D010 ; write only GRAFM = $D011 ; write only COLPM0 = $D012 ; write only COLPM1 = $D013 ; write only COLPM2 = $D014 ; write only COLPM3 = $D015 ; write only COLPF0 = $D016 ; write only COLPF1 = $D017 ; write only COLPF2 = $D018 ; write only COLPF3 = $D019 ; write only COLBK = $D01A ; write only PRIOR = $D01B ; write only VDELAY = $D01C ; write only GRACTL = $D01D ; write only HITCLR = $D01E ; write only CONSOL = $D01F ; read and write ;---------------------------------------- ; POKEY: ;---------------------------------------- POT0 = $D200 ; read only POT1 = $D201 ; read only POT2 = $D202 ; read only POT3 = $D203 ; read only POT4 = $D204 ; read only POT5 = $D205 ; read only POT6 = $D206 ; read only POT7 = $D207 ; read only ALLPOT = $D208 ; read only KBCODE = $D209 ; read only RANDOM = $D20A ; read only SERIN = $D20D ; read only IRQST = $D20E ; read only SKSTAT = $D20F ; read only AUDF1 = $D200 ; write only AUDC1 = $D201 ; write only AUDF2 = $D202 ; write only AUDC2 = $D203 ; write only AUDF3 = $D204 ; write only AUDC3 = $D205 ; write only AUDF4 = $D206 ; write only AUDC4 = $D207 ; write only AUDCTL = $D208 ; write only STIMER = $D209 ; write only SKREST = $D20A ; write only POTGO = $D20B ; write only SEROUT = $D20D ; write only IRQEN = $D20E ; write only SKCTL = $D20F ; write only ;---------------------------------------- ; PIA: ;---------------------------------------- PORTA = $D300 ; read and write PORTB = $D301 ; read and write PACTL = $D302 ; read and write PBCTL = $D303 ; read and write ;---------------------------------------- ; ANTIC: ;---------------------------------------- VCOUNT = $D40B ; read only PENH = $D40C ; read only PENV = $D40D ; read only NMIST = $D40F ; read only DMACTL = $D400 ; write only CHACTL = $D401 ; write only DLISTL = $D402 ; write only DLISTH = $D403 ; write only HSCROL = $D404 ; write only VSCROL = $D405 ; write only PMBASE = $D407 ; write only CHBASE = $D409 ; write only WSYNC = $D40A ; write only NMIEN = $D40E ; write only NMIRES = $D40F ; write only ;---------------------------------------- ; Shadow registers: ;---------------------------------------- SDMCTL = 559 ; shadow of DMACTL GPRIOR = 623 ; shadow of PRIOR PCOLR0 = 704 ; shadow of COLPM0 COLOR0 = 708 ; shadow of COLPF0 RTCLOCK = 20 ATRACT = 77 CHBAS = 756 ; shadow of CHBASE CH = 764 CHACT = 755 SDLSTL = 560 ; display list address VDSLST = 512 ; DLI address PADDL0 = 624 ; 0-228 , shadow of POT0 PTRIG0 = 636 ; 0 = PRESSED , shadow of PTRG0 STICK0 = 632 ; 0000 = RLDU , shadow of PORTA STRIG0 = 644 ; 0 = PRESSED , shadow of TRIG0 COLDST = 580 ; non zero --> do a cold start when pressing the reset key ;---------------------------------------- ; VBI: ;---------------------------------------- XITVB_I = 58463 XITVB_D = 58466 VBI_I = 6 VBI_D = 7 NORMAL_VBI_I = 49378 NORMAL_VBI_D = 49802 SETVBV = 58460 VVBLKI = 546 VVBLKD = 548 XITVB = XITVB_D ;---------------------------------------- ; Handler vectors: ;---------------------------------------- NMIH_VECTOR = 65530 RESH_VECTOR = 65532 IRQH_VECTOR = 65534 ;---------------------------------------- ; I/O: ;---------------------------------------- CIOV = $E456 ; (58454) SIOV = $E459 ; (58457) ;---------------------------------------- ; Bit values: ;---------------------------------------- ; DMA values DV_DMA_ON = %00100000 DV_PM_ONE_LINE = %00010000 DV_PLAYERS_ON = %00001000 DV_MISSILES_ON = %00000100 DV_WIDE_PF = %00000011 DV_NORMAL_PF = %00000010 DV_NARROW_PF = %00000001 ; Display list values DL_DLI_MASK = %10000000 DL_LMS_MASK = %01000000 DL_VSCROLL_MASK = %00100000 DL_HSCROLL_MASK = %00010000 DL_JMP = 1 DL_JVB = 65 DL_BLANK_1 = 0 DL_BLANK_2 = 16 DL_BLANK_3 = 32 DL_BLANK_4 = 48 DL_BLANK_5 = 64 DL_BLANK_6 = 80 DL_BLANK_7 = 96 DL_BLANK_8 = 112 ; Antic graphic modes GM_CHAR_A2 = 2 ; 2 colors, 40x24, 960b, 40xline, 8 scanlines GM_CHAR_A6 = 6 ; 4 colors, 20x24, 480b, 40xline, 8 scanlines GM_CHAR_A7 = 7 ; 4 colors, 20x12, 240b, 20xline, 16 scanlines GM_CHAR_A4 = 4 ; 5 colors, 40x24, 960b, 40xline, 8 scanlines GM_CHAR_A5 = 5 ; 5 colors, 40x12, 480b, 40xline, 16 scanlines GM_CHAR_A3 = 3 ; 2 colors, 40x24, 760b, 40xline, 10 scanlines ; Basic graphic modes GM_CHAR_G0 = 2 ; 2 colors, 40x24, 960b, 40xline, 8 scanlines GM_CHAR_G1 = 6 ; 4 colors, 20x24, 480b, 40xline, 8 scanlines GM_CHAR_G2 = 7 ; 4 colors, 20x12, 240b, 20xline, 16 scanlines GM_CHAR_G12 = 4 ; 5 colors, 40x24, 960b, 40xline, 8 scanlines GM_CHAR_G13 = 5 ; 5 colors, 40x12, 480b, 40xline, 16 scanlines GM_PIXEL_G3 = 8 ; 4 colors, 40x24, 240b, 10xline, 8 scanline GM_PIXEL_G4 = 9 ; 2 colors, 80x48, 480b, 10xline, 4 scanline GM_PIXEL_G5 = 10 ; 4 colors, 80x48, 960b, 20xline, 4 scanline GM_PIXEL_G6 = 11 ; 2 colors, 160x96, 1920b, 20xline, 2 scanline GM_PIXEL_G7 = 13 ; 4 colors, 160x96, 3840b, 40xline, 2 scanline GM_PIXEL_G8 = 15 ; 2 colors, 320x192, 7680b, 40xline, 1 scanline GM_PIXEL_G14 = 12 ; 2 colors, 160x192, 3840b, 20xline, 1 scanline GM_PIXEL_G15 = 14 ; 4 colors, 160x192, 7680b, 40xline, 1 scanline GM_PIXEL_G9 = 15 ; 1 color, 80x192, 7680b, 40xline, 1 scanline GM_PIXEL_G10 = 15 ; 9 colors, 80x192, 7680b, 40xline, 1 scanline GM_PIXEL_G11 = 15 ; 16 colors, 80x192, 7680b, 40xline, 1 scanline ; Prior values PRV_PM_PRIORITY_1 = %00000001 PRV_PM_PRIORITY_2 = %00000010 PRV_PM_PRIORITY_3 = %00000100 PRV_PM_PRIORITY_4 = %00001000 PRV_FIFTH_PLAYER = %00010000 PRV_PM_OVERLAP = %00100000 PRV_GTIA_9 = %01000000 PRV_GTIA_10 = %10000000 PRV_GTIA_11 = %11000000 ; Consol values: CNV_START_MASK = %001 CNV_OPTION_MASK = %010 CNV_SELECT_MASK = %100 ; Stick values: STV_RIGHT_MASK = %1000 STV_LEFT_MASK = %0100 STV_DOWN_MASK = %0010 STV_UP_MASK = %0001 STICK_MASK_RIGHT = %1000 STICK_MASK_LEFT = %0100 STICK_MASK_DOWN = %0010 STICK_MASK_UP = %0001 STICK_VALUE_RIGHT = %0111 STICK_VALUE_LEFT = %1011 STICK_VALUE_DOWN = %1101 STICK_VALUE_UP = %1110 It only have the special chips (I don't use the OS that much, I should just erase the "Shadow registers", "VBI" and "I/O" areas ), but also the read/write versions of the same register and some section for "constants" (like the DL values and some bits values).. so you could say that there is still room for someone to write the "definitive" version of the equates file, starting with all the versions in this thread.
  • Create New...