Jump to content

Mike Harris

Members
  • Content Count

    532
  • Joined

  • Last visited

Posts posted by Mike Harris


  1. My current project is in the final stages of part one.

    Getting the bugs out, testing on real equipment.

     

    I just added 30 new rooms and am still under 14k.

     

    Can someone with expertise share some code that explain how someone like MR. Do can walk between patterns without going through them.

     

    If he digs a hole then how does coleco know because one is a sprite and one is a background.

     

    Currently I have a sprite defined as a 4x4 cube to be updated later and this is the code Tony from Electric Adventures was kind enough to shar with me.

     

     

    MAP_TO_SPRITE:
    LD HL, VRAM_NAME
    LD A,(SPRTBL)
    CP 0
    JP Z, SKIP ; if we are zero
    SRL A ; divide by 2 three times i.e. divide by 8 will give us our row
    SRL A
    SRL A
    LD B,A ; save it to a loop count
    LD DE,32
    XOR A
    LOOP:
    ADC HL,DE
    DJNZ LOOP
    SKIP:
    LD A,(SPRTBL+1)
    CP 0
    JP Z,SKIP2
    SRL A ; divide by 2 three times i.e. divide by 8 will give us our column
    SRL A
    SRL A
    LD E,A
    LD D,0
    XOR A
    ADC HL,DE

    SKIP2:

     

    CALL SETRD
    IN A,(DATA_PORT)
    RET

     

    It does the job well but there are a couple of areas were it just does not catch the code like at the very edge and it allows the sprite to move through at certain corners.

     

    I did not want to keep bugging him especially when he has a video series he's working on.


  2. It works in every Coleco Emulator but as soon as I tried it in a real ADAM nothing...

     

    Nothing but a flashing screen in both my ADAM's.

     

    It is trying to display my game with the colors so I am not talking about a bad BIOS or ram.

     

    It also fail's in an ADAM emulator.

     

     

    Everything up till this point has been on the legit.

     

    No special calls, Proper defined ram location as far as I know.

     

    It is a little over 12k so size is not a problem. (at least that's what I tell my wife)

     

    Somebody....anyone....


  3. Finally have my 8 directions.

     

    MOVE_PLAYER:

    CALL POLLER
    LD A,(CONTROLLER_BUFFER+3)
    LD IY,(SPRTBL)
    LD IX,(SPRTBL+1)

    CP 01
    CALL Z, NORTH
    CP 03
    CALL Z, NORTH_EAST
    CP 02
    CALL Z, EAST
    CP 06
    CALL Z, SOUTH_EAST
    CP 04
    CALL Z, SOUTH
    CP 12
    CALL Z, SOUTH_WEST
    CP 08
    CALL Z, WEST
    CP 09
    CALL Z, NORTH_WEST
    RET

     

    If you have a better routine that saves cycles, space or whatever I am all ears.


  4. Here is the routine in Z80 I created to give you the Joystick Values for your Coleco Games.

    Mind you this uses subroutines and definitions from the Electric Adventure Megablast Game.

    I did not post those routines because they don't belong to me.

    You can pick them up at http://www.electricadventures.net/

     

     

    TEST_JOYSTICS:
    CALL POLLER
    LD A,(CONTROLLER_BUFFER+3)

    CP 00
    CALL Z, PRINT_ZERO
    CP 01
    CALL Z, PRINT_ONE
    CP 02
    CALL Z, PRINT_TWO
    CP 03
    CALL Z, PRINT_THREE
    CP 04
    CALL Z, PRINT_FOUR
    CP 05
    CALL Z, PRINT_FIVE
    CP 06
    CALL Z, PRINT_SIX
    CP 07
    CALL Z, PRINT_SEVEN
    CP 08
    CALL Z, PRINT_EIGHT
    CP 09
    CALL Z, PRINT_NINE

    JP TEST_JOYSTICS:

    PRINT_ZERO:
    LD HL,VRAM_NAME+460
    LD DE, ZERO_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    PRINT_ONE:
    LD HL,VRAM_NAME+460
    LD DE, ONE_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    PRINT_TWO:
    LD HL,VRAM_NAME+460
    LD DE, TWO_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    PRINT_THREE:
    LD HL,VRAM_NAME+460
    LD DE, THREE_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    PRINT_FOUR:
    LD HL,VRAM_NAME+460
    LD DE, FOUR_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    PRINT_FIVE:
    LD HL,VRAM_NAME+460
    LD DE, FIVE_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    PRINT_SIX:
    LD HL,VRAM_NAME+460
    LD DE, SIX_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    PRINT_SEVEN:
    LD HL,VRAM_NAME+460
    LD DE, SEVEN_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    PRINT_EIGHT:
    LD HL,VRAM_NAME+460
    LD DE, EIGHT_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    PRINT_NINE:
    LD HL,VRAM_NAME+460
    LD DE, NINE_PAT
    LD BC, 1
    CALL LDIRVM
    RET

     

    ZERO_PAT:
    DB 010
    ONE_PAT:
    DB 001
    TWO_PAT:
    DB 002
    THREE_PAT:
    DB 003
    FOUR_PAT:
    DB 004
    FIVE_PAT:
    DB 005
    SIX_PAT:
    DB 006
    SEVEN_PAT:
    DB 007
    EIGHT_PAT:
    DB 008
    NINE_PAT:
    DB 009

     

    Pattern Numbers would correspond to your pattern number representing whatever you decide to represent the number.

    You could put Klingon Symbols if you wanted.

     

    This was just a quick routine to give numbers and may have errors but the numbers are sound.

    It was never meant to be optimized or professional.

     

    So for all those out there that can not find the info you need then here you are.

     

    You have 12 bytes in the buffer to check against so you can do all kinds of things with this routine to show the full spectrum of coleco controllers.


  5. These are combinations of the bits. NW is both N and W set to zero. You need to make your own table manually for values 0-15 (AND $0F) and index the controller value into the table.

    Do you have a quick and dirty example?

     

    So far I have been checking one bit at a time then jump to an action such as move in that direction.


  6. Any ideas?

     

    I know that the Coleco Poller returns 4 directions and from what I know about Coleco physical hardware is that the original J-Sticks have only up, down, left and right.

    The SAC controllers actually have physical contacts for the connects to inputs at one time yet it is still only up, down, left and right.

    As far as a routine all I can come up with is still check one bit at a time.

     

    0 for north 1 for west, 2 for south and 4 for east.

     

     

    Any thoughts, recommendations, code???


  7. It would be great if someone would write a decent GUI or how about the authors do it. After all this is the 21st century and DOS is dead.

    Bliss was on the right track and I have no idea where the guy went but I have the older version of 2600-daptor or some deal that uses 2600, Intellivision and Colecovision controllers but nothing maps the keys well outside of MESS/MAME

     

     

    It is time to break free of this old school programing and move into the modern era and I don't mean Java


  8. Until he gets around to adding this and that, which takes time, try using MESS/MAME which is complete with ADAM support.

     

    There are various other emulators out there like this one

     

    EmulTwo

    https://github.com/alekmaul/pvcollib/tree/master/emulators/emultwo

     

    It has a few sound issues but has F18A, Super Game, Mega Cart and Zx81 31 in 1 rom support.

     

    This one is my favorite and I use it for my development because it is drag and drop, scalable, no toying around.

    Debugger, Screenshot, definable keys for all controllers.

    I am in contact with the author and it is still being worked on and it is 100% FREE.

     

    It seems to have been programmed in a modern language, you need no libraries, no support files, an all in one executable.

    Exactly what you want in a program for the 21st century.

     

    As I mentioned, it has a few bugs but at the same time I've played a bunch of super games on it with zero issues other than sound.

     

    Then of course is the Blue MSX which has not been updated in years.


  9. Can someone say if this is a scam or worth it.

     

    https://www.ebay.com/itm/Colecovision-System-SUPER-ACTION-CONTROLLERS-NEW-FRESH-CASE-MINT-SEALED/233081087981?hash=item3644b727ed:g:U~4AAOSwpuFaE4Ji:rk:5:pf:0

     

     

    This guy seems to "ACQUIRE" some never before used and mint Coleco Items which leave me to conclude that these are just some dude printing boxes and filling them with junk.

    Who in their right mind would buy a mint condition so and so just to open it up and check.


  10. OK, taking tomorrow off to do some house work or my wife will beat my %%% but this time it will not be because I asked her too, Giggity.

     

     

    I have reached my goals to the point where I can take 5.

    I have successfully picked up objects from one room and placed them in another.

     

    They are in the same exact spot where I left them.

     

    For you budding programmers out there this is the table I created

     

    Room #, X, Y and Carried by? Player 1, NPC 2 or None 0

     

    001, 150, 200, 0

    002, 020, 040, 0

     

    And so on.

     

    After you define objects in Ram with

     

    objects: DS 4

     

    Then you need to initialize RAM with starting values such as Starting Room, Starting X,Y

     

    You can then load values on the fly as in

    LD A, Room #

    LD (objects), A

    LD A, X

    LD (objects+1), A

    LD A, Y

    LD (objects+2), A

    LD A, 0

    LD (objects+3), A

     

    Once I put in NPC logic any one of the NPC's can grab the treasure by placing 2 in (objects+3)

     

     

    For this game I have enough RAM despite being 1k.
    If I plan to expand and need more I can change the data down to bits or share a byte or 2.

    Such as Room 40+127 would be Room 40 + Player Carry or 40+128 would be Room 40 + NPC Carry.

     

    You get the idea.

     

    Save space if you need to for larger games in order to use a stock Colecovision.

     

     

    There you go.... I learn something, you learn something.

    • Like 1

  11. Remember kids, there is a huge difference between XYZ and (XYZ) in Assembly and other programing languages.


    I sat for hours staring at my code until I took a break.

     

    That's the other tip...

    Walk away from your code for a couple of hours instead of getting frustrated.

    I had one issue that I wanted to punch the monitor so I took a day's rest and ended up reevaluating my code, rewrote the part needed and it was more compact, more precise and worked better.

    Today I ran into the same problem which came down to a pointer.

     

    I wanted to evaluate if two sprites were colliding and instead I ended up comparing garbage. WHY, WHY, WHY!!!
    It is not my code, it must be the assembler. @$%@$%$%$%@$%@

    So in the end I should have pointed to SpriteTable+1 and SpriteTable+2 but ended up pointing to (SpriteTable+1) and (SpriteTable+2)

     

    Hopefully this will be a great tip for up and coming programmers.

     

    Now, I have collision detection for all actors in the game. Actors being NPC and loot.

    Rom is now 7.93k before optimization, sound data, test and debug if any.

    • Like 1

  12. Finished a long night of coding.

     

    Now, all objects in the game can be picked up and left in any room in the game.

    If I leave the room it will be in the same exact spot as I left it unless it is animated.

     

    It was a challenge and boiled down to better use of my ram tables.

     

     

    Another challenge that I had to think about is to get rid of a sprite from the screen when you leave a room.

     

    So started over with my mapping routine for objects and ended up saving a tremendous amount of cycles and a smaller rom. Still under 8k

     

    Assembly Language is like a movie, every single thing on camera has to be built and arranged.


  13. And just think, I actually bought all 3 of those when they first came out.

    Same as Smart LOGO and CPM.

    I thought I was going to be some hot &&it programmer and there just wasn't enough information and tools at the time to do much.

    But at least I was real good at Jumpman Jr. and Montezuma's Revenge. Got past the first dark level and everything.


  14. Well Tony from Electric Adventures came to my rescue once more.

    Going through his sample code I did have it right the first time because I used a function to disable NMI before my writes and everything went crazy.
    So he told me that there was another part which was to re-enable them.

     

    After I did that all my code works perfectly now.

     

    So, my latest work is adding the loot, weapons, treasure or whatever and a pick up routine.

     

    Pretty much everything is done as far as the graphics and mapping.

    I now wander around a 30 room world with no issues, no lag, no artifacts, no getting stuck inside walls or barriers.

    Still under 8k with all my pattern data defined, I just have to do a few things.

    So, starting from 2 December last year and had to basically learn everything I would say that's not bad.


  15. I was, just didn't want to post links.

    Hey, it may be worth that price to someone but one mans garbage is another mans gold.

     

    When I start selling my titles I want them to be original, not ports or MSX games or whatever.
    That's been done already.
    I already have a line up but at the same time I do not want to start vaporware announcements.

    My first game is almost done and 100% free,

    I never looked at this as a money venture but more of a love for the Colecovision that I defended when my friends were getting the NES and Genesis.

    • Like 1

  16. What the hell is wrong with these people.
    Do they honestly believe that these home brew games are some kind of vintage, rare whatever that they should be worth a car payment?

     

     

    Some guy wants $400 for pong which is a weekend project for any beginning programing student in college.

    That and some Space game from 2013 Collectorvision

     

    I actually have the source code in Assembly for 7 different machines including MSX, SMS and the Game boy.

     

    Oh and you get it new, sealed in the box....yeah
    I have no problem with making a couple of dollars but this gouging is way out of hand.

×
×
  • Create New...