Mike Harris
-
Content Count
532 -
Joined
-
Last visited
Posts posted by Mike Harris
-
-
Could not wait till the weekend.
Word to the wise, initialize every bit of ram that your program uses so the system doesn't overwrite your data by a single byte.
-
It's a memory leak.
Working on it this weekend.
But yes, it does have to do with memory locations are different in ADAM.
-
It's a game I am programing.
Works on Colecovision emulators but I have 2 real ADAM's
Both same issues when I try to run it.
-
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....
-
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
RETIf you have a better routine that saves cycles, space or whatever I am all ears.
-
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_NINEJP TEST_JOYSTICS:
PRINT_ZERO:
LD HL,VRAM_NAME+460
LD DE, ZERO_PAT
LD BC, 1
CALL LDIRVM
RETPRINT_ONE:
LD HL,VRAM_NAME+460
LD DE, ONE_PAT
LD BC, 1
CALL LDIRVM
RETPRINT_TWO:
LD HL,VRAM_NAME+460
LD DE, TWO_PAT
LD BC, 1
CALL LDIRVM
RETPRINT_THREE:
LD HL,VRAM_NAME+460
LD DE, THREE_PAT
LD BC, 1
CALL LDIRVM
RETPRINT_FOUR:
LD HL,VRAM_NAME+460
LD DE, FOUR_PAT
LD BC, 1
CALL LDIRVM
RETPRINT_FIVE:
LD HL,VRAM_NAME+460
LD DE, FIVE_PAT
LD BC, 1
CALL LDIRVM
RETPRINT_SIX:
LD HL,VRAM_NAME+460
LD DE, SIX_PAT
LD BC, 1
CALL LDIRVM
RETPRINT_SEVEN:
LD HL,VRAM_NAME+460
LD DE, SEVEN_PAT
LD BC, 1
CALL LDIRVM
RETPRINT_EIGHT:
LD HL,VRAM_NAME+460
LD DE, EIGHT_PAT
LD BC, 1
CALL LDIRVM
RETPRINT_NINE:
LD HL,VRAM_NAME+460
LD DE, NINE_PAT
LD BC, 1
CALL LDIRVM
RETZERO_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 009Pattern 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.
-
Cool.
This is the first time ever seeing these values.
Learning something new every day.
-
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.
-
Thank you, I have that straight.
I am talking about the other 4 directions as in NW, SW, SE and NE
-
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???
-
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/MAMEIt is time to break free of this old school programing and move into the modern era and I don't mean Java
-
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.
-
I was just wondering if you have any plans to add F18A support to ColEm?
I would be happy if it just ran ADAM software but alas it's called COLEM and not ADAM emulator.
Hard to do on phones
-
What is really wrong about this picture is that I did not find it first.
-
Can someone say if this is a scam or worth it.
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. -
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.
-
1
-
-
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.
-
1
-
-
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.
-
BTW, does anyone have those Arcade editions in Reproduction boxes or at least one's that can be printed out and assembled?
-
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.
-
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.
-
BTW, how are those 1UP cabinets.
I first seen them at Christmas time despite them being out for a while.
I prefer making my own MAME cabinet but I could buy one but as a gift... -
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.
-
1
-
-
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.

working out the bugs
in ColecoVision Programming
Posted · Edited by Mike Harris
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.