Mike Harris
-
Content Count
532 -
Joined
-
Last visited
Posts posted by Mike Harris
-
-
Just an update.
I figured out the mirror effect which I could literally slap myself of how easy it was.I changed from rendering an entire screen of 768 to printing one pattern at a time which save on blank area.
Then I print out the first 16 places but at the same time printing another character on the other side but backwards as in...
31 - whatever column I am at.
Do that 24 times and you have a screen.
To further reduce I have changed my data so now I can render an entire 768 pattern screen using only 48 bytes of the same block pattern for my maze.
It wasn't hard to figure out considering you only need 2 bytes plus mirrored to fill a single row or 4 byes non mirrored.
So now I am absolutely sure that all of this and much more will be able to fit on a real cartridge.
I also received my second ADAM today which I picked up for a couple hundred.
Both DD drives have been sitting and as I feared the rubber on both counter wheels are deteriorated and they are jammed with goo.
So I will fix them later with a trip to Walmart for some hot wheel cars.
-
Wrote a new parser last night that will compress all my maps down to the essentials so I can fit it all within 24k for at least 30 rooms.
-
I think it was something you said earlier and now I get it.
I am creating a Coleco ROM as in Read Only.Once the data is created I can't write to that data in the real world so it can't be modified.
So, unless I come up with another way to create a map then I need to go to the next step which would be use the Coleco Ram area.
Copy the first line of data, mirror it then send it to the display.
Repeat 24 times per room.
-
My original intent was something as follows.
take an 8 byte string of numbers such as
db 016,016,016,016,000,000,000,000
and mirror them so I end up with a 16 byte mirrored string of numbers.
db 016,016,016,016,000,000,000,000,000,000,000,000,016,016,016,016
Which seems to be easier said than done.
I wanted to be able to mirror my mazes and save space to fit in a 32k cart for a real colecovision
But to do so would be to parse my data set then print them one by one in reverse order or put them all in a buffer then send that to the screen.
-
I should start copy and pasting instead of typing off the top of my head.
But I didn't know about the RAM address.I solved my other issues like DJNZ LOOP stuff. Don't put a comma and things tend to work better.
-
I should have paid more attention in my pointer class back when I was taking C++.
I think one of my problems is that I am not loading data into the memory space where TEMPADD was defined.if it is currently 000 for the first byte I am trying to replace the 000 with say 34.
I have tried everything I can learn about Assembly.
such as &TEMPADD and (TEMPADD)
Which I was shooting blindly in the dark.
When I looked HL after TEMPADD was declared it gave the address.
So I guess I have to point to the TEMPADD address and THEN poke the byte to that location?
Then increment my pointer to the next byte location which would be TEMPADD+1
I thought LDIR did all of that and was basically a copy command.
DE info to be copied
HL area to be copied to
BC how many byes to be copied
LDIR to execute
-
SO using DE then duplicating all the data in LEVEL to the address at HL would work?
Or do I have to reserve space such asLD HL, LEVEL
LD DE, TEMPADD
LD BC, 08
LDIRLevel:
db 016,016,016,016,016,016,016,016
TEMPAD:
db 000,000,000,000,000,000,000,000
You would think this was a simple process just to load all of the data from LEVEL into TEMADD so you have identical data sets.
-
DL was a typo when I showed my example.
I was about to jump for joy when you said it but then I checked my code.
The TEMPADD: EQU 08 was just a way to reserve 8 bytes of space but I think I did that wrong as well.
-
Can someone explain why this is not logically sound?
TEMPADD: EQU 08
LD HL, LEVEL
LD DL, TEMPADD
LD BC, 08
LDIRLevel:
db 016,016,016,016,016,016,016,016
When it gets compiles that data does not transfer from LEVEL to TEMPADD
Just random garbage.
All I am trying to do is transfer one set of data into a temporary address and I have even tried LDDR with same result.
Being as I can't find a suitable TNIAsm replacement I have no idea if it is a bug in .45 because there is a v1
or if it is my syntax I had much the same result with JNZ using TNIAsm.
So if anyone has a drag and drop TNI replacement???
-
Major strides today.
Finally figured out how to create 256 separate characters (patterns) and apply the 2 colors per pattern or 1 color per line of the 8 lines of the pattern.
Heck, I could draw pictures and put them to screen or scramble them up this is so cool.
So now I have 15 colored blocks for my mazes, 0-9 another color while A-Z even another.
I am so proud of my work.
Now, if I could just figure out to change the border color in Mode 2. Easy in Mode 0 which was to change bit 7 I believe and write it.-
2
-
-
I think it is every programmers nightmare.
It works in my head but why can't I get it to work on the computer.
-
I should just start a developer blog...
I wrote a routine today that will take any table at any length that can be put with a 16 bit register and mirror it so I only have to create patterns for one half of the screen.
Mostly done with a for loop but now I have to code it in z80.
Will keep everyone posted.
-
1
-
-
I don't accept new projects, sorry. Try CollectorVision.
Thanks, not looking for a publisher.
Was asking the legality of making $$ off of old roms being the port is yours.
You can even change the name from Puss in Boots to Cat in Shoes which seems to be the thing these days.
Like I say, this first one is a freebie for the community and my learning rom.
Later I will think about charging.
I come from the old school where Infocom was king and if I release a title it will be professional that comes with collectibles.
-
1
-
-
I remember when I decompiled Coleco Omega Race back around 198???
I was just a beginner back then and I discovered that they only had three data patterns for the ship and they were North, North East and East.
Everything else was mirrored to those 3.
If I am wrong then someone please correct me because I only found the 3 patterns at the time.
-
1
-
-
Just finished 7 maze (room) designs, tested them to screen. Everything displays, everything aligns side by side.
I have over 20 more to do.
Now...
I have to use some compression techniques to reduce rom size.I can compile it and it will work in an emulator but I a want this to work on a real colecovision.
So I am thinking of mirroring the data because all my mazes are mirrored like
db *0,0,1,0,0,1,0,0 0,0,1,0,0,1,0,0
As a quick representation.
I need to take the first 8 numbers, my case 16 of the 32 pattern positions per row and reverse them THEN put them to screen.
Also, there is a lot of dead space.
Not all of the screen needs to be filled and my original idea of placing one character on screen at a time is looking better at this point.
This is not like I am putting a picaso to screen, it is just a maze.
I am just blown away at the instantaneous display when I call that pattern to screen.
-
Development is coming along.
I really want to share what I am doing but when it is done I will release it to the community as my first project.
Gather feedback and then my next project maybe I will sell.
From your experience if I port something from the Amiga like they did with Rick Dangerous, how does that play out if you want to make a few $$ of a port.
-
Dude, you are AMAZING.
I was putting things to screen one 8 bit character at a time like we did back in basic days.
I knew that wasn't the way to do it either.
Truth be told I have been hung up over a simple JP NZ statement that I could just not get to work no matter what up until I went to bed.Sometimes you need a break from staring at the screen for 20 minutes drooling and it's not porn.
I have no idea where my syntax is off or it is a bug in TniAsm v.45 and I don't have 1.0.
That's been the go to compiler only because I just drag and drop, rom is created and then I just load up the rom in any emulator handy.
It really cuts testing time down to milliseconds but...
Anyway, time to test out your lessons sensei. -
I have an involved question which HAS to be taught in a class because I can't figure it out.
I have seen this in Amiga source code and I know it is possible but let me give you a quick example.
For giggles say this was my map data at the end of my code.Screen1:
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DB 0,0,0,1,1,1,1,1,1,1,0,0,0,0,0
DB 0,0,0,1,1,1,1,1,1,1,0,0,0,0,0
DB 0,0,0,1,1,1,1,1,1,1,0,0,0,0,0
DB 0,0,0,1,1,1,1,1,1,1,0,0,0,0,0
DB 0,0,0,1,1,1,1,1,1,1,0,0,0,0,0
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Is there a way to put that data to the screen at one time and at any color in assembly.
Such as
LD,HL,Screen1
LD, A, Color5
CALL FILLVRAM
Of course this is not to scale which would be 32x24 8 bit patterns.
I remember being able to save an image with paint master and be able to instantly send it to the screen with a few pokes in smartbasic.
I figured it out using The Hackers Guide to ADAM but that was a long time ago.In this project I am working on I wanted to create a map like above and put it to the screen but the only way I can do it at the moment is one character at a time.
It does work but it also is not professional.How can I build a colorful maze one 8 bit character in some loop at a time.
Using Mode 2 has also given me problems with the earlier border example as well.
Maybe I should go back to Mode 1 -
Changed to your example and actually saved 1 byte.
I was wondering why I had to move A to C when I could have just loaded c with the color directly.As far as compiling I have really great results just dragging and dropping my .asm file on tniasm,exe and it creates a rom ready to go within less than a second.
-
Thanks for the help.
I did some research with my guide I bought back in 1984 which is the same thick book at Sac News.This is what ultimately worked for anyone who wants to know.
LD A,$0A ; Border Color
LD C,A ; Copy A into register C
LD B,$07 ; B with register 7
Call $1FD9 ;Write to the RegisterAs I use these routines I am going to write them all down after I prove them to work then share them.
Unless there is a book with these already out there.
Sort of like a list of pokes and peeks back in the day that you would get out of a magazine. -
arghhhhhh
Why did I throw them away 30 something years ago....And I bought all three.
Someone just break them down so we can make reproduction boxes.
-
dead links
Wish there was a repository of all the Coleco programing guides, tips, source with comments.
losing faith that this will be preserved for history's sake.
-
I have Gorf and Tunnel Runner for the Atari 2600.
In the box and shrink wrapped when I bought them back in 1991.I am more or less just trying to get an idea for what they are worth to a collector.
I am more into Coleco, Atari 5200 and Intellivision more than anything else.
What's with the 5200 anyway, I thought it was a neat system and once you get used to the controllers everything played great. -
I am impressed that there is so much interest in a product that can be easily emulated on your phone or better yet in 4K my 80" TV.
Seriously, get yourself a 3D printer and a raspberry PI then create your own version of a table top.
Why pay a kickstarter for something that will make other people rich.Look what happened with the Oculus Rift for Christ sake.

Just another Coleco Programer
in ColecoVision Programming
Posted
Well, if I am going to use up all 32k I want to give as much as I can.
The maps I am producing for my first completed coleco game are so bland that all of this could be done in video mode 1.
I personally have a sense that it would be lazy to render such bland graphics using 32k when there are games like Pitfall 1 and 2 that have so much in them.
Also by developing this system of mapping it will be future proof for my second project.
I will also hint that what I am doing are ports that have never been done on a Colecovsion and I hope you guys will be presently surprised.