Jump to content

Photo

My Channel F Web pages are up


67 replies to this topic

#26 Impaler_26 OFFLINE  

Impaler_26

    Cookie Meister

  • 2,580 posts
  • Braindead
  • Location:Hueco Mundo

Posted Sat May 12, 2007 3:59 AM

MrRetroGamer Posted Wed May 9, 2007 2:42 PM

Sean also came up with a way to make a multicart out of the SABA #20 cart, and also has some other interesting info here. He did post on this site a few years ago, but not lately.

Here is a good link to a big post at Atari Age about Channel F Homebrew Programming.


Thanks for those links, i ran across Sean Riddle's Page about 1 or 2 years ago when looking for infos about the Channel F.
I was pretty surprised to find out that there are actually Homebrews for the Channel F :-o Great Site with lots of information!

I also read that post on AA back then and IIRC i found the link for the Rom-Set somewhere in that thread...

Too bad i don't have my Saba Videoplay anymore, a multicart would have been a much better use for that boring Chess Cart :D

#27 Impaler_26 OFFLINE  

Impaler_26

    Cookie Meister

  • 2,580 posts
  • Braindead
  • Location:Hueco Mundo

Posted Sun May 13, 2007 2:09 PM

Kurt_Woloch Posted Fri May 11, 2007 6:17 PM
Well, thanks for those binaries! As far as I know, there was a mailing list set up, and Fredric CJ Blåholtz and someone called "Blackbird" started to do a Pac Man clone on the Channel F (also known as VES), but I've only seen an incomplete binary where you can move around Pac Man, but no ghosts are there, and there seems to be some "holes" in the maze data, which means that you can move up or down if you leave the tunnel on the right, and then get stuck. :-)
However, that mailing list has been inactive now for over a year.
In my opinion, what limits the Channel F greatly is its limited choice of colors. In one scanline, you can EITHER get black/white OR red, green and blue mixed freely on a grey, light green or light blue background. That means that you can't use black or white on the same scanline as one of the other colors! Oh, and video access seems to be pretty slow too, due to the necessity of setting each pixel individually.
In the following picture I tried to do a mockup of one of the screens of "Defender of the crown" on the Channel F:


You're welcome, i still had the Rom-set sitting on my hard disk, so np. I haven't heard of that Pac Man clone yet, this is very interesting! Do you have the address of that mailing list? I'd like to take a look at that.
Your mockup is pretty neat, a nice colorful-mess (for Channel F standards) and from a distance you can recognize what it is supposed to be :)
Would be nice if that could be done on the Channel F....

#28 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,027 posts

Posted Mon May 14, 2007 11:30 AM

You're welcome, i still had the Rom-set sitting on my hard disk, so np. I haven't heard of that Pac Man clone yet, this is very interesting! Do you have the address of that mailing list? I'd like to take a look at that.


OK... the archives of the mailing list are here:

http://www.freelists...hives/channelf/

One of the posts with the binaries is here...

http://www.freelists...4/msg00006.html

and if you follow the link, you'll find that multiple binaries are stored here...

http://www.bingbangb...files/channelF/

If you follow the discussion on the mailing list, there might have been more advanced versions than the latest one archived on the site above, but I've been unable to locate them :-(

Your mockup is pretty neat, a nice colorful-mess (for Channel F standards) and from a distance you can recognize what it is supposed to be :)
Would be nice if that could be done on the Channel F....


Thanks... I think something like this COULD be doable, but you'd need a lot of memory to store all the pictures... even if one of them is only 2-3K... that's already the whole space of a Channel F cartridge from back then. So you'd probably have to be creative with bank switching...

#29 Impaler_26 OFFLINE  

Impaler_26

    Cookie Meister

  • 2,580 posts
  • Braindead
  • Location:Hueco Mundo

Posted Tue May 15, 2007 6:19 PM

Kurt_Woloch Posted Mon May 14, 2007 7:30 PM

OK... the archives of the mailing list are here:

http://www.freelists...hives/channelf/

One of the posts with the binaries is here...

http://www.freelists...4/msg00006.html

and if you follow the link, you'll find that multiple binaries are stored here...

http://www.bingbangb...files/channelF/

If you follow the discussion on the mailing list, there might have been more advanced versions than the latest one archived on the site above, but I've been unable to locate them :-(


Thanks for those links! I tried out Ves-Pacman and i must say it's quite impressive! Too bad this hasn't been completed, even with some simple squares as "ghosts" it would make a nice Channel F game.
I wouldn't have thought something like that would be possible on the Channel F....

Thanks... I think something like this COULD be doable, but you'd need a lot of memory to store all the pictures... even if one of them is only 2-3K... that's already the whole space of a Channel F cartridge from back then. So you'd probably have to be creative with bank switching...


Maybe you could use a 256k rom like sean riddle's multicart, but i can imagine programming this would be pure torture.. :skull:

#30 Segataritensoftii OFFLINE  

Segataritensoftii

    Dragonstomper

  • 735 posts
  • Singing crack rabbit
  • Location:Little Muu

Posted Thu May 24, 2007 2:36 PM

Don't forget to put in F8 of Nations, the world's smallest game. It makes those 256 byte DOS games seem massive in comparsion. :cool:

#31 Retro Rogue OFFLINE  

Retro Rogue

    River Patroller

  • 3,311 posts
  • Location:Milwaukee, Wisconsin

Posted Thu May 24, 2007 5:55 PM

What I'm lookig for is the reason why Fairchild renamed the system Channel F from the Video Entertainment System and exactly when this occurred.


From what I understand, Fairchild changed the name of "Video Entertainment System" to "Channel F" shortly after the Atari "Video Computer System" was released, to differentiate their "VES" from Atari's "VCS."


Unfortunately, that's what it says in my book Phoenix. I don't think I ever had documented proof about that when I originally wrote the book in 1994.


From the consoles I own (including the original VES model) it would seem to support that.

When I look back at it now, I wonder why Fairchild would have needed to diffferentiate its system from the VCS. The VCS wasn't a major player until Atari released Space Invaders in 1980.


I would say that's applying to much hindsite. Neither console was a major player, because they were struggling for recognition in a Pong filled market (even Atari was still releasing dedicated consoles at the same time in '77 yet). However, Atari itself (as a company and brand name) was a major player. What was the major problem with Fairchild as a company is it simply didn't have the name recognition with regards to games - Atari did. So if you have another "Atari" branded product, whose name sounds similar to yours and you're already struggling in a market full of discounted Pong machines (and the emerging LED handheld market which dominated the late 70's), you're going to do what you can to differentiate your name. Especially since within the following months after Atari's own release you have Bally's programmable system, Magnavox's, APF's, etc. The latter two also having name recognition as a brand at the time because of their previous consoles. My money is on that the name change occured around the early '78 time period.

Edited by wgungfu, Thu May 24, 2007 5:57 PM.


#32 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 533 posts
  • Good.
  • Location:Sweden

Posted Fri Aug 10, 2007 4:17 PM

Here's the latest build of Pac-Man (at least I think it is) made by me and Blackbird:
http://w5.nuinternet...elf/pac-man.bin

If you want appropriate sound, download this edited version of MESS also (edited and re-complied by Sean Riddle):
http://w5.nuinternet...th_debugger.zip

This version also reads an external palette-file so you can tune the colors and the debugger (which needs to be turned on in the ini/channelf.ini "debug 1" if you want to be able to use it)


I really need feedback and error-reports, so it would be nice if a few of you could try it out.


Edit: BTW, I might try and get that nice picture into a program... shouldn't be that hard.

Edited by e5frog, Fri Aug 10, 2007 4:20 PM.


#33 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 533 posts
  • Good.
  • Location:Sweden

Posted Sat Aug 11, 2007 11:46 AM

Plotting the Channel F defender_tournament...

I've had time to transfer a little, had to cut the height down to 58 rows but added two pixels in width because in case I decide to plot one color at the time, width is then 104 which is evenly divided by 8 which easily sets 13 bytes per row and color, no need to break the rows or pad end with zeroes when translating into assembler-code (adding % in front of eight bits and separating them with a comma).


I might replace it with two bits each instead and try and find Blackbirds multi-blit routine somewhere to plot all colors of the graphics in one sweep instead.

I think background is 00 and the three colors are coded as 01, 10 and 11. I guess that's the most space-effective way to do it without any type of compression, but I don't know if it's the fastest.


I'll just search and replace the letters appropriately (looks awful here as rows are divided):
[codebox].......B.B.B.........B................................R.RR.............
........
......GRG.RBG...RB..B.. ;lb
.............B.........B.B...........................GRRGR.....B.B..B...........
G..RRRBRBGGR.RGBGBRBG.. ;lb
.B.B.B............B........B.B.B.B.....................R.R.G....................
.B.GRRGRRRBRGBRGRRGRR.. ;lb
........B.B...B.B...B................................GRRRR....G.................
GRRRRRRBRRGRRRRRBRRRB.. ;lb
..B.........B.........B.B.B..........................GR.RR......B.B............G
RRBRGRBRGBRRGBRGRRBRR.. ;lb
.....B.......................B........................R.R......................R
BRRGRGRRRRRRRRRRRGRGB.. ;lb
.....................................................GR..R........B.........RRRR
RGRRRBRRBRBRBRRGRRRRR.. ;lb
BBBB.......B.B.BBBBBBBBBBBBB..............R.R........GRR.R.....G.G.......RR.RG.R
RBRRRRRGRGRRGRBRBRRRR.. ;lb
BBBBBBBBBBBBB.B.BB.BBBBBBBB.BBBBBBBBBBBB.BB.BB.BBBBBBB.BBBBB.B.BBBBBBBB.B..B....
....B.................. ;black
.............B.B...B...................GBG..GB.......R......G.........RR.RR.RBRB
GRRRRRRRBRBRRRGRGBRBB.. ;lb
BBBBBBBBBBBBBBBBBBB.BBBBBBBBBBBBBBBBB.BBBBB.BBBBBBBBB.B.BBBBBBBBBBBB..B.B.......
....B.............BBB.. ;black
...................R.RG........RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR.R.RGRBRGRGR
RBRGRRRRRGRBRB.BBBB.... ;lb[/codebox]

Edited by e5frog, Sat Aug 11, 2007 4:24 PM.


#34 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 533 posts
  • Good.
  • Location:Sweden

Posted Sat Aug 11, 2007 4:19 PM

Hello again!

Finished Kurt_Woloch's picture, here's a snapshot from MESS:
chan0000.png

Kurt's mock-up picture:
defender_tournament_channelf.jpg


Here's the binary for MESS:
Attached File  picture.bin   4KB   134 downloads


And finally all the code who made this possible:

As you can see I made it easy for me and just plotted the correct spots (columns 121 and 121) to set the palette for each row, this could easily be changed into reading a string of data and have a standard routine for plotting it all.


Code game.asm:
[codebox]; full screen picture demo by e5frog, original picture painted by Kurt_Woloch

processor f8

;===========================================================================
; VES Header
;===========================================================================

include "ves.h"

;===========================================================================
; Configuration
;===========================================================================

game_size = 4 ; game size in kilobytes

;===========================================================================
; Program Entry
;===========================================================================

;---------------------------------------------------------------------------
; Cartridge Initalization
;---------------------------------------------------------------------------

org $800

cartridge.init:
; initalize the system
CARTRIDGE_START
CARTRIDGE_INIT


;---------------------------------------------------------------------------
; Main Program
;---------------------------------------------------------------------------

main:

; clear to B&W

li $21
lr 3, A
pi clrscrn


; plot picture blue

dci gfx.blue.parameters
pi blitGraphic

; plot picture red

dci gfx.red.parameters
pi blitGraphic

; plot picture green

dci gfx.green.parameters
pi blitGraphic



; set each palette row

; plot in 121 -> lt.blue, in 122 -> l.gray, both 121 and 122 -> lt.green

;lb
clr
lr 1, A
li 121 ; lt.blue
lr 2, A
clr
lr 3, A
pi plot

;lb
li 121 ; lt.blue
lr 2, A
lis 1
lr 3, A
pi plot

;lb
li 121 ; lt.blue
lr 2, A
lis 2
lr 3, A
pi plot

;lb
li 121 ; lt.blue
lr 2, A
lis 3
lr 3, A
pi plot

;lb
li 121 ; lt.blue
lr 2, A
lis 4
lr 3, A
pi plot


;lb
li 121 ; lt.blue
lr 2, A
lis 5
lr 3, A
pi plot


;lb
li 121 ; lt.blue
lr 2, A
lis 6
lr 3, A
pi plot

;lb
li 121 ; lt.blue
lr 2, A
lis 7
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
lis 9
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
lis 11
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
lis 13
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
lis 15
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
li 17
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
li 19
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
li 21
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
li 23
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
li 25
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
li 27
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
li 29
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
li 31
lr 3, A
pi plot

;black

;black

;lb
li 121 ; lt.blue
lr 2, A
li 34
lr 3, A
pi plot

;black

;lb
li 121 ; lt.blue
lr 2, A
li 36
lr 3, A
pi plot

;lb
li 121 ; lt.blue
lr 2, A
li 37
lr 3, A
pi plot

;black

;lg
li 121
lr 2, A
li 39
lr 3, A
pi plot
li 122
lr 2, A
li 39
lr 3, A
pi plot

;black
;40

;lg
li 121
lr 2, A
li 41
lr 3, A
pi plot
li 122
lr 2, A
li 41
lr 3, A
pi plot

;black
;42

;lg
li 121
lr 2, A
li 43
lr 3, A
pi plot
li 122
lr 2, A
li 43
lr 3, A
pi plot

;black
;44

;lg
li 121
lr 2, A
li 45
lr 3, A
pi plot
li 122
lr 2, A
li 45
lr 3, A
pi plot

;black
;46

;lg
li 121
lr 2, A
li 47
lr 3, A
pi plot
li 122
lr 2, A
li 47
lr 3, A
pi plot

;black
;48

;lg
li 121
lr 2, A
li 49
lr 3, A
pi plot
li 122
lr 2, A
li 49
lr 3, A
pi plot

;black
;50

;lg
li 121
lr 2, A
li 51
lr 3, A
pi plot
li 122
lr 2, A
li 51
lr 3, A
pi plot

;black
;52

;lg
li 121
lr 2, A
li 53
lr 3, A
pi plot
li 122
lr 2, A
li 53
lr 3, A
pi plot

;black
;54

;lg
li 121
lr 2, A
li 55
lr 3, A
pi plot
li 122
lr 2, A
li 55
lr 3, A
pi plot

;black
;56

;lg
li 121
lr 2, A
li 57
lr 3, A
pi plot
li 122
lr 2, A
li 57
lr 3, A
pi plot



main.end:



br main.end


; break!!


;---------------------------------------------------------------------------

include "drawing.inc"

; graphics data

include "blue.inc"
include "red.inc"
include "green.inc"

;===========================================================================
; Signature
;===========================================================================

; signature
org [$800 + [game_size * $400] -$10]

signature:

.byte "···Frog·2007····"[/codebox]
Code drawing.inc (by Blackbird)
[codebox];===================;
; Drawing Functions ;
;===================;

;---------------;
; Plot Function ;
;---------------;

; plot out a single point on the screen
; uses three registers as "arguments"
; r1 = color
; r2 = x (to screen) (0-101)
; r3 = y (to screen) (0-57)

plot:
; set the color using r1
lr A, 1
outs 1

; set the column using r2
lis 4
as 2 ; fix the x coordinate
com
outs 4

; set the row using r3
lis 4
as 3 ; fix the y coordinate
com
outs 5

; transfer data to the screen memory
lis $6
sl 4
outs 0
lis $5
sl 4
outs 0

; delay until it's fully updated
; lis 6
;plot.delay:
; ai $ff
; bnz plot.delay

pop ; return from the subroutine

; takes graphic parameters from ROM, stores them in r1-r6,
; changes the DC and calls the blit function with the parameters

blitGraphic:
; load six bytes from the parameters into r0-r5
lisu 0
lisl 1
blitGraphic.getParams:
lm
lr I, A ; store byte and decrease ISAR
br7 blitGraphic.getParams ; not finished with the registers, loop

; load the graphics address
lm
lr Qu, A ; into Q
lm
lr Ql, A
lr DC, Q ; load it into the DC

; call the blit function
jmp blit

;---------------;
; Blit Function ;
;---------------;
; this function blits a graphic based on parameters set in r1-r6,
; and the graphic data pointed to by DC0, onto the screen
;
; originally from cart 26, modified and annotated
; uses r1-r9, K, Q
;
; r1 = color 1 (off)
; r2 = color 2 (on)
; r3 = x position
; r4 = y position
; r5 = width
; r6 = height (and vertical counter)
;
; r7 = horizontal counter
; r8 = graphics byte
; r9 = bit counter
;
; DC = pointer to graphics

blit:
; adjust the x coordinate
lis 4
as 3
lr 3, A
; adjust the y coordinate
lis 4
as 4
lr 4, A

lis 1
lr 9, A ; load #1 into r9 so it'll be reset when we start
lr A, 4 ; load the y offset
com ; invert it
blit.row:
outs 5 ; load accumulator into port 5 (row)

; check vertical counter
ds 6 ; decrease r6 (vertical counter)
bnc blit.exit ; if it rolls over exit

; load the width into the horizontal counter
lr A, 5
lr 7, A

lr A, 3 ; load the x position
com ; complement it
blit.column:
outs 4 ; use the accumulator as our initial column
; check to see if this byte is finished
ds 9 ; decrease r9 (bit counter)
bnz blit.drawBit ; if we aren't done with this byte, branch

blit.getByte:
; get the next graphics byte and set related registers
lis 8
lr 9, A ; load #8 into r9 (bit counter)
lm
lr 8, A ; load a graphics byte into r8

blit.drawBit:
; shift graphics byte
lr A, 8 ; load r8 (graphics byte)
as 8 ; shift left one (with carry)
lr 8, A ; save it

; check color to use
lr A, 2 ; load color 1
bc blit.savePixel ; if this bit is on, draw the color
lr A, 1 ; load color 2
blit.savePixel:
inc
bc blit.checkColumn ; branch if the color is "clear"
outs 1 ; output A in p1 (color)

blit.transferData:
; transfer the pixel data
lis $6
sl 4
outs 0
lis $c
sl 4
outs 0
; and delay a little bit
blit.savePixelDelay:
; ai $60
; bnz blit.savePixelDelay ; small delay

blit.checkColumn:
ds 7 ; decrease r7 (horizontal counter)
bz blit.checkRow ; if it's 0, branch

ins 4 ; get p4 (column)
ai $ff ; add 1 (complemented)
br blit.column ; branch

blit.checkRow:
ins 5 ; get p5 (row)
ai $ff ; add 1 (complemented)
br blit.row ; branch

blit.exit:
; return from the subroutine
pop[/codebox]


Bitmaps for blue, green and red dots

These were written as as described before, for the blue field all the '.' 'G' and 'R' were replaced by 0 and all B:s were replaced by 1. All whitespace and other extra charaters were removed resulting in a long character string of 1:s and 0:s (mostly zeroes). I had previosly written a small C++ program to format the long string of 0000010010011001000111000 etc into assembler byte-code as can be seen below: .byte 000100, %10011001, etc...

Then just add the rest of the data needed for Blackbirds blitGraphics routine, colors, start coordinates, width, height

[codebox] ; blue

gfx.blue.parameters:
.byte clear ; color 1
.byte blue ; color 2
.byte 0 ; x position
.byte 0 ; y position
.byte 102 ; width
.byte 58 ; height
.word gfx.blue.data ; address for the graphics

gfx.blue.data:
.byte 000001, %01010000, 000100, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, %10000000, 001000, 100100, 000000
.byte 010000, 000101, 000000, 000000, 000000, 000000, 000101
.byte 100000, 000000, 000101, 000010, %10100101, %01000000, 000010
.byte 000001, %01010100, 000000, 000000, 000000, 000000, 000000
.byte 001010, 000001, 100000, 000000, 101000, %10100010, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 100000, 010001, 100000, 001000, 000010, %10100000, 000000
.byte 000000, 000000, 000000, %10100000, 000000, 010001, 100010
.byte 010000, 010000, 000000, 000000, 010000, 000000, 000000
.byte 000000, 000000, 000000, 000001, 000000, 000000, 010000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000010, 000000, 000000, 100101, %01000000, 111100, 000101
.byte %01111111, %11111100, 000000, 000000, 000000, 000000, 000000
.byte 000000, 001000, 000000, %01010000, %11111111, %11111010, %11011111
.byte %11101111, %11111111, %01101101, %11111101, %11110101, %11111110, %10010000
.byte 000100, 000000, 000000, 000000, 010100, %01000000, 000000
.byte 000010, 010000, 000000, 000000, 000000, 010100, 000001
.byte %01000000, %10111111, %11111111, %11111110, %11111111, %11111111, %10111110
.byte %11111111, %10101111, %11111111, 101000, 000000, %01000000, 000001
.byte %11000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 001000, 101000, 000010, %10111100, %11111111
.byte %11111111, %11101111, %11011100, %11111111, %11111111, %11111111, %11111111
.byte %10110000, 000000, 000000, 000001, %11111000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 100010, %10000010, %01010000, 000000, 000000, %10101010
.byte %01011111, %01101001, 100101, %01100101, %11111111, %11000000, 000000
.byte 000000, 010100, %10010101, %01010101, %01010001, %01010000, 000000
.byte 000000, 000000, 000000, 000000, 000101, %01010100, 000010
.byte 101001, %11111111, %11111111, %11101111, %11111101, %10111111, %11111101
.byte %11110111, %11111111, %11101100, 000000, 000000, 000000, 000000
.byte %10101000, %10111101, %01010101, %11111000, 000000, 000010, 000000
.byte 000000, 000101, 000000, 100010, %10001000, 001111, %11111111
.byte %11111110, %11111111, %11101010, %10000010, %10111010, %10000000, 000000
.byte 000000, 000000, 000000, 001000, 000000, %10110000, 000000
.byte %10000000, %10010101, %01010100, 010001, 000000, 000010, 000101
.byte %01010100, 000101, 000101, 110111, %11101111, %11101111, %11111111
.byte %11111111, %11111111, %11110000, 101000, 000000, 000000, 000000
.byte 000000, %10000000, 000000, 000000, %01000000, 000010, %10101000
.byte %01001010, 010001, %01010101, 001010, 000000, 000000, %10000100
.byte 101000, %10010101, 000010, %10000000, 100101, %01001011, %01111110
.byte %01000110, %10100000, 000000, 000000, 000000, 001000, 000000
.byte 000000, 000000, 000000, 000001, 000000, 000000, 010011
.byte %10001000, 001000, %01010101, 000010, 000010, %01010000, %10100001
.byte 000100, 000000, 001101, %01010000, 000001, 000100, 000000
.byte 000000, 000000, 000001, 010000, 000000, 000000, 000000
.byte 000000, %10000100, 010101, %01010001, %01101010, 100100, %01010000
.byte 000010, %01001000, %10100000, %01000000, %10100010, %10010010, 100101
.byte 010001, %01111000, 010000, 000000, 000000, 000000, 000000
.byte 001000, 000000, 000000, %01000000, 000000, 000000, %01010100
.byte 100100, %10001000, %10100000, 000000, %10010101, 100101, 000000
.byte 000000, 100001, 000000, %01010001, 100000, %11010000, 000001
.byte 000000, 000000, 001000, 001000, %01000001, 000000, 000000
.byte 000000, 000000, 000000, 000000, 010101, %01000000, 000000
.byte 100000, 001000, 000000, %11000000, 010000, 000000, %10000000
.byte 000000, 000000, %11000000, 000000, 010010, 000000, 100000
.byte %10000001, 000010, 001000, 000000, 000000, %10100100, %10000000
.byte 000000, 000000, 100010, 000000, 000000, 000000, 100010
.byte 101111, 000010, 010100, 000100, 000000, %01010011, %10000000
.byte 000100, 000101, 000000, 100000, %10000000, %10011110, 010000
.byte %10000000, 010000, 010011, 000010, %01100000, %01000000, 000000
.byte 000101, %01010000, 010100, %11000000, %01000001, %01010010, 000000
.byte 000000, 010000, 001011, 000100, 010000, 000000, 000010
.byte 000000, 000000, 010011, 010010, %01100010, %11000010, 000000
.byte 000000, %01000010, 010000, 001000, %10010100, %01000000, 001100
.byte 001000, 101010, %10000000, 100000, %10000000, 010100, 101010
.byte %10100010, 000010, %10010000, 010100, %01010010, 000000, 000000
.byte 000000, 000010, 000000, %10000000, 000010, 000000, 100010
.byte 000010, %10101011, %11000001, 000000, 000000, 000000, 000000
.byte 000011, %01101010, 000000, %01110010, 000000, 000001, 100001
.byte %01001100, %10100000, 000000, 000100, 000000, 000000, 001010
.byte %10010000, 000000, 000000, %01000000, %01000000, %01001000, 001010
.byte %10000000, 000000, 000000, 000000, 000100, %01011010, 000000
.byte 011010, 000000, 000000, 110001, %01000001, 000000, 000000
.byte %10000100, %01000000, %01000000, 000000, %10110100, %01010000, 000000
.byte 000001, 000000, 000000, 010001, 000000, %10000000, 000000
.byte 000010, 100000, 000101, %11110000, 000001, 000010, 100000
.byte 000010, %10000101, %01010000, 000001, 000000, %01000000, 000000
.byte 000000, 001011, %01000000, 000100, %10100010, 000000, 000000
.byte 000000, 001000, 000000, 001001, 000000, 000000, 010101
.byte %01101101, 000000, 000000, 000000, %10000000, 001001, %10010010
.byte %11000100, %10000000, 010000, 000000, %11011000, 000000, 100000
.byte 100101, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000001, 000000, 000000
.byte 000000, 000000, 000000, 000001, %10001100, 111101, 000101
.byte 000010, %10001011, 000000, 000000, 000000, 001000, %10101010
.byte %01000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte %10000000, %01000010, %01010101, 000000, 000100, 000000, 000000
.byte 000000, 000000, %11001011, 010111, %11110000, %10000000, %10111000
.byte 000000, 000000, 010000, 000000, 010000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000100, %10000101
.byte %01000000, 000100, 110000, 000000, 000000, 000000, 000000
.byte 111000, 100100, %10110010, 000000, %01000000, 000000, 000000
.byte 000000, 000000, %10000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000010, %01101100, 000010, %01010000
.byte 000000, 100000, 000000, 000000, 000001, %10010011, %10000000
.byte %11111111, %01010000, 000000, 000000, 100000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 001010, %10100000, 000000, %01001010, 000000, 000000
.byte %01000000, 001000, 000000, 111100, %10100101, %01100101, %01010000
.byte 000000, 010000, 000000, 000001, 100000, 000000, 000000
.byte 000000, 001000, 000000, 000000, 000000, 000000, 111010
.byte 000010, 000000, 000000, %01000100, 000001, 000010, 000000
.byte 000001, %10000000, %01111110, 001000, %11111110, %10100000, 101010
.byte %10101010, %10100000, %10001000, %10000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 100000[/codebox]

[codebox] ; green

gfx.green.parameters:
.byte clear ; color 1
.byte green ; color 2
.byte 0 ; x position
.byte 0 ; y position
.byte 102 ; width
.byte 58 ; height
.word gfx.green.data ; address for the graphics

gfx.green.data:
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000001, %01000100, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 010010, 000000
.byte 000000, 000001, 000000, %11000101, 010000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000001, 000000, 000000
.byte 000000, %10010000, %01001001, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000001, 000000, %10000000, 000000, 010000
.byte 000100, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000100, 000000, 000000, 000001, 000100, %01000100
.byte %10000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000010, 101000, 000000, %10100000
.byte 000000, 000000, 000000, 000000, 000000, 000000, %01000000
.byte 000000, 000000, 000010, 000000, 001000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000001, 000000, %01010000
.byte 000001, 100000, 101001, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000101, 100000, 000000, 100000, 000000, 000001, 000000
.byte 000101, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, %10000000, 000000, 000000, 000000
.byte 000000, 000000, 100010, %10000010, 001000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000001, 000000, 000000, 000000, 000000, 000000, 000010
.byte 000010, %10000000, 100000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 001010, %10001010, %10101010, %10000000, 000000
.byte 000001, 000000, 000000, 000000, 100000, 000001, %01010000
.byte %10000010, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 100100, %10000000, 100000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, %10000000, 000000, %01000000, %10101000, %10101000
.byte 000001, %01010000, %01001010, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000001, 100000, %01000000, 000000, 000000, 010000
.byte 000000, 000000, 000000, 100000, 101010, %10100010, 100000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 100000
.byte 010100, %10000010, %10010010, %10010010, 010000, 000000, 000000
.byte 000001, %01000000, 000000, 001000, %10001001, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, %10010000, %01010011, 010101
.byte 000000, 000000, %10001010, 000000, 000000, 000001, 000100
.byte %01010000, %10000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000100, 001001, 101000, %01001010, %10101000
.byte 010010, 100010, 000010, 100000, 001000, %01000010, %10000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte %10010101, 010100, 010101, 100000, %01000000, 000000, 000000
.byte 000000, 000001, 000000, 100000, 100000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 101010, %01010100, 001010, %01001010
.byte 010000, 000000, 001000, 100000, 000100, %10000000, %10001001
.byte 000000, 001000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000100
.byte 001010, 000000, %01010000, %10100000, 000000, 010000, 000000
.byte 000000, 000010, 000000, 000000, 000001, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, %01100011, %01001010, %11010000
.byte 001000, %11000100, 000000, 101010, %10100100, 000000, 000000
.byte 000000, 000100, 000010, 000000, 000000, 001010, %10001000
.byte %01000100, %01000000, 000000, %01000000, 000000, 000000, 000000
.byte 000100, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000101, 000000, 000000, 000000, 100100, 000000, %10000100
.byte 000000, 000000, %10100000, 000000, 000000, %10000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000001, 000000, 000101
.byte 101010, %10100000, 000001, 000000, %10100000, 000000, %01000000
.byte %01001000, 000100, 100000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 010101, %01000000, 000000, 001010, %10010000
.byte 000000, 000000, 000001, %01000000, 000000, 101010, 000000
.byte %10010000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000101, %01000101, %01010010, %10100000, 000000, 000000
.byte 000000, 101000, 000000, %10000001, 000000, 100000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 010001, 010010, 000000
.byte 010100, %10010101, %01000000, 000000, 000000, 000000, 000000
.byte 100001, 001000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, %10000010, %01001010, %10100100, %10100101, 101010
.byte %10110100, 000000, 000000, 000000, 001001, 001000, 101000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 001010
.byte %10100100, %01000010, 010010, %10010101, 000000, 000100, 000000
.byte 100000, 000000, 000010, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000001, 000100, 110010, %01001010
.byte 010101, 010101, %01010010, 100000, 000000, 000001, 000000
.byte 000000, 100100, %01000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 001010, %10101000, 001010, %10000101, 110001, %01001001
.byte %10101010, %10100010, 000000, 000010, %10000000, 000010, 000100
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, %10000100
.byte 000000, 000010, 100000, %01000000, 000001, %01010101, %01000000
.byte 000000, 000000, 000000, 000000, 000000[/codebox]

[codebox] ; red

gfx.red.parameters:
.byte clear ; color 1
.byte red ; color 2
.byte 0 ; x position
.byte 0 ; y position
.byte 102 ; width
.byte 58 ; height
.word gfx.red.data ; address for the graphics

gfx.red.data:

.byte 000000, 000000, 000000, 000000, 000000, 000000, 000010
.byte %11000000, 000000, 000000, 000000, %10010000, %01000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 001101, 000000
.byte 000000, 000000, 111010, 101000, %01000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 010100, 000000, 000000
.byte 000000, %01101110, %10010110, %11000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, %11110000, 000000, 000000, 001111
.byte %11011011, %11101110, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000010, %11000000, 000000, 000000, %11101010, %10011001
.byte %01101100, 000000, 000000, 000000, 000000, 000000, 000000
.byte 001010, 000000, 000000, 000100, %11010111, %11111111, %01000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 100100
.byte 000000, 000000, %11111101, %11011010, %10110111, %11000000, 000000
.byte 000000, 000000, 000000, 001010, 000000, %11010000, 000000
.byte 011010, %01010111, %11010110, %10101111, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 010000, 000000, 001101, %10101010, %11111110
.byte %10111010, %01000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000101, 000000, %01111111, %11111111, %11111111
.byte %11111111, %11111101, %01010101, %01010101, %11110101, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte %01000100, 001011, %11010100, %10101001, %01011010, %11111111, %11110101
.byte %11111101, %01011101, %01011000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 100000, 000100, 000000, %01101111
.byte %11111110, %10111101, %11111111, %11111111, %11011010, %10101010, %10101101
.byte 000100, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000101, %01010000, %01011101, %01000000
.byte 000000, 001010, %11011011, %01011101, %01010111, %10110000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000100
.byte 000000, 000000, 000000, 000110, %10111111, %01010101, %01010010
.byte %10101010, %10101010, %10110000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, %10100000, 000000, 000000, 000000
.byte 000000, 101110, 001010, %11010101, %11010101, %01010101, %01011011
.byte %10010000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 011100
.byte %01001000, %01000101, 000101, 000000, %10001000, 000001, %10100000
.byte 010110, %10110111, %10101010, %11010101, %01010100, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 101000, %11001010
.byte %10011101, %01001010, %01000000, 001010, 000001, %11011010, %10100011
.byte %10101101, 110101, %01000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 001000, 000100, 010100, 010100, 000000
.byte 001001, %01010101, %01010101, %01010111, 100010, %10000000, %01010101
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 001010, %01000000, 001010, %01010000, 100000, %10011011, %11111011
.byte %11011111, 010010, %11010101, 010001, %01000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 010100, 101010, %01010001, 100001
.byte %11100010, %10000001, %11010101, %11010101, %10011011, %01110101, %01010100
.byte %11010000, %11110101, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 001011
.byte %01010101, 101011, 100000, %01011010, 100111, %11100111, 101000
.byte %01111111, %10100100, %01000100, %01101000, 010100, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 001100, %10100001, 000101
.byte %01010101, 011000, 000000, 000000, 000000, 100000, 000000
.byte 000001, %01010001, 000001, %01010010, 111101, %11010101, %01010101
.byte %10110000, 010100, 111110, %10111111, %01111111, %11001000, 000000
.byte 001000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 101010, %10100100, 110011, %10111011, %10011010, %10110000, %01010001
.byte %01010101, 011111, %01011101, %01110001, %11111011, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000010, %10101111, 000000
.byte 010100, 011011, %01001010, %11101010, %01011111, %01111011, %10111110
.byte %10010101, %01010001, %01011000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 101010, %10111011, %01010101, %11110000, 001101
.byte %10111000, %01110011, %11111110, %10110110, %11011111, %11010101, %11101010
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte %11011010, %11111010, %10101010, 000000, 011011, %10111010, %11011111
.byte %11111111, %11010111, %11111001, 010010, %11111100, %01010000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000110, %11100101, %01010101
.byte %10101001, 100000, 001001, %11001111, %10011111, %11111111, %11111111
.byte %01010010, %10110101, %10000010, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000001, %01100001, %10010101, %01001010, %01010000, 000000
.byte 001000, %11110001, %11110000, %11111111, %11010100, 010011, %01010000
.byte 010000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 110101
.byte %01011010, 000101, %01101101, 001000, %10001010, %10101010, 011111
.byte %01001111, %11011111, %11111101, %01110101, %10000001, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000010, %01000000, 001001, %10010100
.byte 000000, 101000, 000101, %01011001, %11110000, %11111110, 000101
.byte %11111111, %11010000, 010000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 100101, %01000000, 000100, %01010010, %10000000, %10100100
.byte %01010000, %01010101, 001111, %11100101, %01110111, %10111101, %11000001
.byte 000000, 000000, 000000, 000000, 000000, 000000, 000000
.byte 000000, 000000, 000000, 000000, 000000, 000000, %01010001
.byte %01010101, %01011101, %01010111, 100001, 101000, 100000, %10101001
.byte %01111110, %01010111, %11111000, %01000000, %01010000[/codebox]


You also need the ves.h:

[codebox];====================================================================
; VES.H
; Fairchild Channel F Header File
; 20041030
; by Kevin Lipe
;====================================================================

VESH_VERSION = 101

; THIS IS A PRELIMINARY RELEASE OF *THE* "STANDARD" VES.H
;
; This file defines memory mapping and BIOS calls for the
; Fairchild Channel F, and also standardized Macros.

;====================================================================
; E Q U A T E S
;====================================================================

;------------------------
; BIOS Calls
;------------------------
clrscrn = $00d0 ;uses r31
delay = $008f
pushk = $0107 ;used to allow more subroutine stack space
popk = $011e
drawchar = $0679

;------------------------
; Colors
;------------------------
red = $40
blue = $80
green = $00
bkg = $C0
clear = $FF

;------------------------
; Schach RAM
;------------------------
ram = $2800 ;location of RAM available in Schach cartridge

;===================================================================
; M A C R O S
;===================================================================

;-------------------------
; CARTRIDGE_START
; Original Author: Sean Riddle
; Inserts the $55 that signals a valid Channel F cartridge and an
; unused byte, which places the VES at the cartridge entry point, $802.

MAC CARTRIDGE_START
.byte $55, $00 ; valid cart indicator, unused byte
ENDM

;-------------------------
; CARTRIDGE_INIT
; Original Author: Sean Riddle
; Initalizes the hardware and clears the complement flag.

MAC CARTRIDGE_INIT
; initalize the hardware
lis 0
outs 1
outs 4
outs 5
outs 0

; clear the complement flag (r32)
lisu 4
lisl 0
lr S, A
ENDM

;-------------------------
; PROMPTS_NO_T
; Original Author: Sean Riddle
; This code functions the same as the "prompts" section of the BIOS,
; but this code doesn't have a "T?" prompt, so it's useful in games that
; don't have time limits or settings.

MAC PROMPTS_NOT
prompts SUBROUTINE
LR K,P ;
PI pushk ;
.prompts2: LI $85 ; red 5 (S)
LR $0,A ;
PI prompt ;
LR A,$4 ;
CI $08 ; is it button 4, Start?
BF $4,.notbut4 ; no, check others
.notbut2:
PI popk ; yes, return
PK ;

.notbut4: CI $02 ; is it button 2, Mode?
BF $4,.notbut2 ;
LI $8e ; red M
LR $0,A ;
PI prompt ;
LISU 3 ;
LISL 6 ;
LR A,(IS) ;
as 4 ;add the mode to the game #
LR (IS),A ;
BF $0,.prompts2 ;
ENDM

;-------------------------
; SETISAR
; Original Author: Blackbird
; Sets the ISAR to a register number, using lisu and lisl

MAC SETISAR
lisu [[{1}] >> 3]
lisl [[{1}] & %111]
ENDM[/codebox]

Edited by e5frog, Sat Aug 11, 2007 5:19 PM.


#35 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 533 posts
  • Good.
  • Location:Sweden

Posted Tue Aug 14, 2007 1:57 AM

Now when VESwiki is back I manged to test the MultiBlitGraphic routine that young Blackbird has written.

In this new binary the three segment picture is drawn first as before, then it waits for input from one of the hand controllers (press anything).

Screen clears to black again (as it did before the picture was the first time).


MultiBlit-picture is drawn - significantly faster, I'm guessing >25% or something like that.
Graphics data is ofcourse also shorter - 1/3 shorter.

Machine waits for new hand controller input and then restarts program




Conclusion - large multicolor pictures on Channel F is best drawn with the MultiBlitGraphic-routine!

http://www.bingbangb...ippet:Multiblit


Attached File  picture.bin   5KB   123 downloads

Edited by e5frog, Tue Aug 14, 2007 1:57 AM.


#36 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 533 posts
  • Good.
  • Location:Sweden

Posted Tue Aug 14, 2007 3:26 AM

Last change (I think) of the picture program was to improve the palette drawing.

I defined it as a blitGraphic object, 2 pixels wide and 58 pixels tall to be plotted
at the palette columns 121 and 122.

Only 23 bytes is needed for all the palette data ( .word is 2 bytes - 16 bits (adress))
instead of setting coordinates and plot one dot at a time.

Binary data in the gfx.palette.data:
00 gives black background row
01 lt. gray/grey
10 lt. blue
11 lt. green


; full screen picture demo by e5frog, original picture painted by Kurt_Woloch	processor f8;===========================================================================; VES Header;===========================================================================	include	"ves.h"	;===========================================================================; Configuration;===========================================================================game_size		=	4			; game size in kilobytes;===========================================================================; Program Entry;===========================================================================;---------------------------------------------------------------------------; Cartridge Initalization;---------------------------------------------------------------------------	org	$800cartridge.init:	; initalize the system	CARTRIDGE_START	CARTRIDGE_INIT	;---------------------------------------------------------------------------; Main Program ;---------------------------------------------------------------------------main:	; clear to B&W 	li	$21	lr	3, A	pi	clrscrn	; plot picture blue	dci	gfx.blue.parameters	pi	blitGraphic	; plot picture red	dci	gfx.red.parameters	pi	blitGraphic	; plot picture green	dci	gfx.green.parameters	pi	blitGraphic	; set palette	dci	gfx.palette.parameters	pi	blitGraphic	; wait for hand controller input	pi	wait.4.controller.input	; clear to B&W 	li	$21	lr	3, A	pi	clrscrn	; now draw multiblit version	dci	gfx.multicolor.parameters	pi	multiblitGraphic	; set palette 		dci	gfx.palette.parameters	pi	blitGraphic	; wait for hand controller input	pi	wait.4.controller.input	jmp	0			; restartwait.4.controller.input:	; see if one of the hand controllers has moved	clr	outs	0	outs	1						; check right hand controller	ins	1	com	bnz	wait.4.controller.input.end	; check the other controller	clr	outs	4						; check left hand controller	ins	4	com	bnz	wait.4.controller.input.end	br	wait.4.controller.inputwait.4.controller.input.end:	pop	;---------------------------------------------------------------------------	; gfx drawing routines	include "drawing.inc"	include "multiblit.inc"	; graphics data	include "picture-palette.inc"		include "blue.inc"	include "red.inc"	include "green.inc"	include "multicolor.inc";===========================================================================; Signature ;===========================================================================	; signature	org [$800 + [game_size * $400] -$10]signature:	.byte	"   e5frog 2007  "





Remember that the
VESwiki_logo2.gif
is up again!



Edit: Ooops... forgot to upload the new binary: Attached File  picture.bin   4KB   106 downloads

Attached Files


Edited by e5frog, Tue Aug 14, 2007 4:36 AM.


#37 Impaler_26 OFFLINE  

Impaler_26

    Cookie Meister

  • 2,580 posts
  • Braindead
  • Location:Hueco Mundo

Posted Tue Aug 14, 2007 12:13 PM

Here's the latest build of Pac-Man (at least I think it is) made by me and Blackbird:
http://w5.nuinternet...elf/pac-man.bin

Wow! I just tried this out and i must say it's darn impressive!!! :-o
I wouldn't have thought the channel-f could do such an accurate port of pac-man (considering it's technical limitations)!
:thumbsup:

#38 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 533 posts
  • Good.
  • Location:Sweden

Posted Tue Aug 14, 2007 12:34 PM

Here's the latest build of Pac-Man (at least I think it is) made by me and Blackbird:
http://w5.nuinternet...elf/pac-man.bin

Wow! I just tried this out and i must say it's darn impressive!!! :-o
I wouldn't have thought the channel-f could do such an accurate port of pac-man (considering it's technical limitations)!
:thumbsup:



Many thanks! ;-)


Check out the VESwiki_logo3.gif you too!

#39 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,027 posts

Posted Sat Aug 18, 2007 11:52 AM

Hello again!

Finished Kurt_Woloch's picture, here's a snapshot from MESS:
chan0000.png

Kurt's mock-up picture:
defender_tournament_channelf.jpg

Here's the binary for MESS:
Attached File  picture.bin   4KB   134 downloads


Hmmm... seems like something went wrong when converting my picture. In the picture I've sent, the background color mostly was set to light grey, while here it's set to light blue for the sky and light green for the meadow part of the picture... the background color light grey doesn't get used at all.

I've now modified my converter program so that it puts out the correct .byte strings for gfx.palette.data and gfx.multicolor.data. But I don't know if they're really correct because I haven't tested them. I've downloaded the development pack from the VesWiki, but setting it up would be a bit troublesome, especially in that the newest version of the picture drawing program has the picture stored in two different formats in order to compare the drawing speeds of two different routines.

So how could we go on with this? Should we go on with it at all or should we leave the picture as it is? Don't forget that my program is able to convert any picture now... albeit with mixed results. For instance, this would be a converted screenshot of Pole Position:

Pole_Position_channelf.gif

And this is the according code, though I don't know if it's really correct...
I had to put a space after each percent sign which normally doesn't belong there, otherwise the code would get jumbled by the forum software.

gfx.palette.data:                .byte % 01010101, % 01010101, % 01010101, % 01010101, % 00010000, % 01010001, % 01000101                .byte % 00010100, % 01010001, % 00010001, % 00010001, % 00010001, % 00010001, % 00010001                .byte % 00010000

gfx.multicolor.data:                .byte % 00111111, % 11111110, % 11101110, % 11101111, % 11111011, % 10111111, % 10110011                .byte % 10110011, % 10111111, % 11111111, % 11111111, % 00111111, % 11111111, % 11111111                .byte % 10111011, % 11111111, % 00111111, % 11111011, % 10111111, % 00000000, % 00000000                .byte % 00000000, % 00100000, % 00000011, % 11111011, % 10010011, % 11101110, % 11111111                .byte % 11111111, % 11111011, % 11111111, % 11001111, % 11111111, % 11111111, % 00111011                .byte % 00111011, % 10111111, % 10111011, % 00111011, % 10111111, % 11111011, % 10111111                .byte % 00111011, % 11111111, % 00010000, % 11000000, % 00000000, % 00000000, % 00001100                .byte % 00101100, % 11110101, % 11110011, % 11111101, % 11101110, % 11111011, % 11111011                .byte % 10110111, % 11101110, % 11101110, % 11011111, % 11111111, % 11111111, % 10111111                .byte % 11111111, % 11111111, % 00111011, % 11111111, % 10111111, % 11111011, % 01111111                .byte % 01000000, % 00000000, % 00000011, % 11000000, % 01111101, % 11111111, % 10110011                .byte % 11110011, % 10111111, % 11111100, % 11111011, % 11111111, % 11101111, % 11111111                .byte % 11111111, % 10111011, % 10111011, % 10111111, % 10111011, % 10110011, % 10111111                .byte % 00111011, % 10111111, % 10111011, % 11111110, % 00001000, % 00000000, % 10010000                .byte % 00001011, % 10110011, % 10111011, % 10110101, % 11111011, % 11111111, % 11101110                .byte % 11111100, % 11111110, % 11101111, % 11111011, % 10111011, % 10111111, % 11111111                .byte % 11111111, % 10111111, % 11111111, % 11111111, % 10111111, % 11111111, % 10111111                .byte % 11111110, % 11111101, % 11000000, % 10110111, % 11011111, % 11111111, % 11111111                .byte % 11111111, % 01110011, % 11111011, % 10110011, % 11111110, % 11110011, % 00111111                .byte % 11111011, % 11111111, % 11111111, % 11101111, % 10111011, % 00110011, % 00111011                .byte % 10111011, % 10111111, % 10110011, % 10111111, % 11101110, % 11111110, % 11101110                .byte % 11111111, % 10111011, % 00111011, % 11101110, % 11001110, % 11111001, % 11111011                .byte % 11111111, % 11111110, % 11111101, % 11111111, % 00111011, % 11111011, % 00111011                .byte % 11101111, % 11001111, % 11111111, % 11111111, % 11111111, % 11111111, % 10111111                .byte % 11111111, % 11101111, % 11111111, % 00111111, % 11110011, % 10111111, % 11111111                .byte % 11110011, % 11111111, % 11001101, % 11010011, % 11111110, % 11101110, % 11111110                .byte % 11111011, % 10111111, % 11110011, % 11111111, % 11111100, % 11101111, % 11001110                .byte % 11101110, % 11101100, % 11101110, % 11001111, % 10111011, % 11101111, % 11110011                .byte % 10111111, % 10111011, % 11111111, % 10111011, % 10111011, % 11001110, % 11101111                .byte % 11111001, % 11111011, % 00111111, % 11111110, % 11111111, % 00111111, % 10111011                .byte % 11011110, % 11101110, % 11111111, % 11101111, % 11111111, % 11111111, % 11111111                .byte % 11111111, % 11001111, % 11001100, % 11111011, % 11111111, % 10111111, % 11111011                .byte % 10111111, % 11111111, % 11110111, % 11111111, % 11101101, % 11010011, % 11111111                .byte % 11101110, % 11111111, % 10111111, % 10111111, % 11111011, % 11111111, % 11111110                .byte % 11001111, % 00110000, % 11000011, % 00110000, % 00111110, % 11101111, % 11110011                .byte % 11111100, % 11111011, % 10111111, % 10111011, % 11111111, % 11101111, % 10111011                .byte % 11101110, % 11101111, % 11111001, % 00111110, % 11101111, % 11111111, % 10111111                .byte % 10111111, % 10111011, % 11111110, % 11101110, % 11111111, % 00110011, % 11111111                .byte % 11110011, % 11111111, % 00111111, % 11101100, % 11110011, % 00111100, % 11111111                .byte % 00110011, % 11111100, % 11101111, % 11001111, % 11111100, % 11111111, % 11111011                .byte % 01111111, % 00111111, % 11111011, % 00110011, % 10111111, % 10111111, % 11111110                .byte % 11111111, % 11111100, % 11001111, % 11110011, % 00110011, % 11110011, % 00111100                .byte % 11001111, % 11111100, % 11111100, % 11001100, % 00111111, % 11111110, % 11111111                .byte % 11101111, % 11101110, % 11111111, % 10111011, % 11110101, % 00111100, % 11101100                .byte % 11111111, % 11111111, % 10111111, % 11101110, % 11111110, % 11001100, % 11110011                .byte % 11001100, % 11110011, % 11001100, % 11111100, % 11111111, % 10110000, % 00000011                .byte % 00111111, % 11111111, % 10111011, % 00111110, % 11001111, % 11101111, % 11111110                .byte % 11001111, % 11111110, % 11010011, % 00111111, % 11110011, % 10111011, % 00111111                .byte % 11001111, % 11111110, % 11111111, % 11110011, % 11110011, % 11110011, % 11110011                .byte % 11111100, % 11001100, % 11001111, % 00000000, % 00111100, % 11000011, % 00001111                .byte % 11111100, % 11001111, % 11101111, % 11001110, % 11111111, % 11001110, % 11110111                .byte % 11111111, % 11001100, % 11111111, % 11111100, % 11101111, % 11101110, % 11111111                .byte % 10110011, % 11110011, % 11110011, % 11110011, % 11110011, % 00111111, % 11111111                .byte % 00000011, % 10010000, % 00111111, % 11111111, % 11110011, % 00111111, % 11101111                .byte % 11101111, % 11111110, % 11101111, % 11111111, % 10010011, % 11001111, % 11111111                .byte % 00110011, % 00111111, % 00110011, % 11110011, % 10111111, % 11110011, % 11110011                .byte % 11110011, % 11110011, % 11111111, % 11001100, % 11000000, % 00110011, % 00000000                .byte % 00111100, % 11110011, % 11111111, % 11001111, % 00110011, % 00110011, % 00111101                .byte % 11110011, % 00110101, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000001                .byte % 10011001, % 10011001, % 10011101, % 11011001, % 10011101, % 10011001, % 11011001                .byte % 10011101, % 10011101, % 10011101, % 10011101, % 10011110, % 01110110, % 11011101                .byte % 10110111, % 10011100, % 00011101, % 00011001, % 10011001, % 10011001, % 11010001                .byte % 11011011, % 00111011, % 00111011, % 00110101, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00100010                .byte % 10001000, % 10001010, % 01100010, % 10001000, % 10011010, % 00100010, % 01100010                .byte % 01100010, % 00100010, % 00100010, % 01100010, % 00100010, % 00101000, % 10001000                .byte % 10100010, % 00101000, % 10100010, % 10001010, % 00100010, % 01100010, % 00100010                .byte % 10101000, % 10001000, % 10001001, % 01011010, % 10101010, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 10101010, % 10101000, % 10101010, % 10101010                .byte % 10100001, % 01000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00001010, % 10001010                .byte % 00101010, % 00100010, % 00100110, % 00101000, % 10100010, % 00101010, % 10100010                .byte % 00101010, % 00100010, % 10001010, % 00101010, % 10001000, % 10001010, % 10100010                .byte % 10101000, % 10001001, % 10001001, % 10001010, % 10101000, % 10100110, % 10101010                .byte % 10101010, % 10001010, % 11100101, % 00101010, % 10101010, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 10001010, % 10101010, % 00101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 10101010, % 10101000, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010                .byte % 00010000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 01000000, % 00100110, % 10101000                .byte % 10001010, % 10001010, % 10100010, % 10001010, % 00101010, % 10101010, % 00101010                .byte % 10101010, % 00100010, % 10100010, % 00100010, % 10101010, % 00100010, % 10101010                .byte % 10101010, % 10100010, % 10101001, % 10100110, % 11101010, % 10100110, % 01010110                .byte % 00010110, % 01100110, % 01111010, % 10101000, % 10101010, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10100010                .byte % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101000                .byte % 10100010, % 11100110, % 01000001, % 00011100, % 11001100, % 11001100, % 00110101                .byte % 01000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000001, % 00000000, % 00000000, % 00000100, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00001010, % 10101010, % 10101010                .byte % 00100010, % 00100010, % 00101000, % 10101000, % 10001000, % 10001010, % 00101000                .byte % 10001010, % 10101010, % 10101010, % 00100110, % 01111010, % 10100010, % 00100000                .byte % 00001001, % 00011001, % 10011001, % 10011101, % 01101110, % 11100110, % 01100110                .byte % 01100101, % 01011101, % 00101010, % 10101010, % 10101010, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10100000, % 00000000, % 00001100, % 11100010, % 11010011                .byte % 00110011, % 00101100, % 01000011, % 01001100, % 11001100, % 11101100, % 01010000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000100, % 00000000, % 00000000, % 00000101                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00100110, % 10001010, % 00101010                .byte % 10101001, % 10101010, % 00100010, % 01101010, % 10101010, % 01101001, % 10101010                .byte % 10100111, % 10000000, % 01011100, % 01101101, % 01010101, % 01010101, % 10011001                .byte % 01011101, % 11101110, % 01100110, % 01110111, % 10111001, % 10110101, % 10011001                .byte % 10111001, % 10011010, % 10101010, % 10101010, % 10101010, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 00100001, % 01010111, % 10010000, % 00110010                .byte % 00001011, % 01101100, % 00111011, % 10110011, % 00111011, % 10010000, % 00011100                .byte % 11001110, % 01000100, % 01001101, % 10110011, % 00110001, % 01011101, % 01000000                .byte % 00000000, % 00000001, % 00000100, % 01000000, % 00000000, % 00000001, % 00000100                .byte % 00000000, % 00000001, % 01000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00010000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000101, % 00001010, % 10101010, % 10101010, % 10101010                .byte % 10101010, % 10101010, % 10101010, % 00000000, % 00000001, % 00000001, % 10011110                .byte % 01001110, % 01000111, % 01001100, % 00111001, % 11000001, % 11011001, % 00000001                .byte % 10111000, % 10111001, % 00010011, % 10110011, % 10110000, % 10110110, % 00100110                .byte % 00010101, % 01000000, % 01000000, % 01000000, % 00000000, % 00000100, % 01010101                .byte % 01010000, % 00010100, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000001, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 01010000, % 00001010, % 10101010                .byte % 10101010, % 10101001, % 10010101, % 01010101, % 01010000, % 00011011, % 01101101                .byte % 00000111, % 10000010, % 11100111, % 10110010, % 11100110, % 11010011, % 10011110                .byte % 11000011, % 10110011, % 00110001, % 11000011, % 10111001, % 11100100, % 11011011                .byte % 01111011, % 01000001, % 00010101, % 01000000, % 00000000, % 00000101, % 00010000                .byte % 00000000, % 00000100, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000001, % 00000000                .byte % 00001010, % 10101010, % 10100000, % 00000000, % 01011000, % 00100100, % 00101100                .byte % 11000011, % 00001110, % 11001110, % 11011100, % 11001100, % 01000111, % 00001100                .byte % 11101101, % 10111001, % 11100100, % 11100100, % 01101110, % 01111001, % 00110011                .byte % 00111011, % 00001011, % 00000110, % 00001011, % 01010101, % 01000001, % 01010101                .byte % 01010000, % 00010100, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000101, % 00000000, % 00000101, % 01010101, % 01110000, % 00000110, % 11010001                .byte % 11001011, % 00011110, % 01111001, % 00011110, % 00010001, % 00111001, % 10110110                .byte % 11101100, % 01000000, % 00110010, % 11010011, % 00110011, % 01101110, % 11000111                .byte % 00001100, % 11011001, % 00011110, % 01110001, % 11100001, % 00011101, % 00010101                .byte % 00010001, % 00010100, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000101, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000010, % 11001110                .byte % 11100000, % 11101110, % 01001101, % 10110000, % 11001110, % 11100111, % 00111011                .byte % 10011100, % 11000000, % 00011110, % 00001011, % 10000101, % 11101110, % 01001000                .byte % 10110011, % 01101110, % 01111001, % 00001011, % 10110000, % 11100010, % 11011101                .byte % 01010011, % 01010101, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 01000100, % 00010000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000001                .byte % 11010011, % 10011110, % 01110100, % 01000111, % 10110000, % 11100111, % 10010000                .byte % 01111001, % 11100111, % 00111001, % 00010101, % 11010101, % 01010101, % 01010100                .byte % 01011101, % 11011101, % 00000110, % 11001100, % 01111011, % 00110111, % 10011110                .byte % 01110100, % 00111001, % 00010100, % 11010101, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 11101100, % 00110011, % 00111011, % 10110000, % 11100111                .byte % 00001100, % 11101100, % 11001011, % 00001011, % 01100111, % 01100111, % 01010101                .byte % 11011101, % 00010011, % 10011110, % 11001110, % 11001100, % 11100110, % 11100000                .byte % 01101100, % 00110011, % 00111011, % 10011100, % 01000101, % 00110101, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 01111001, % 11100100, % 01000001                .byte % 11100111, % 00001110, % 01111001, % 00110110, % 01001101, % 10110100, % 01010101                .byte % 01110111, % 10010001, % 00001101, % 10110110, % 01111001, % 00000111, % 10010001                .byte % 00110011, % 01000111, % 10110110, % 11011001, % 00010011, % 00110110, % 11010101                .byte % 01010101, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 11100000                .byte % 10110011, % 10110011, % 00001011, % 10011110, % 00001011, % 10000010, % 11100000                .byte % 10110000, % 01110111, % 01110111, % 01111011, % 10111111, % 11011101, % 10011110                .byte % 11100000, % 10111011, % 10010010, % 11100011, % 10011110, % 00001011, % 10111001                .byte % 00101100, % 10111001, % 11010101, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000001, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 11010001, % 11100100, % 01111001, % 00011100, % 11001100, % 11010001                .byte % 11001100, % 11010001, % 11100100, % 01111011, % 01101100, % 11101101, % 00110011                .byte % 00110100, % 01110001, % 00110100, % 01110001, % 00110100, % 01110011, % 00110011                .byte % 01000111, % 00010011, % 01000111, % 00010011, % 10010001, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00101110, % 00001011, % 10000010, % 11100010                .byte % 00100010, % 00101110, % 00100010, % 00101110, % 00001011, % 10000010, % 00111000                .byte % 00111000, % 10111000, % 10001011, % 10001011, % 10001011, % 10001011, % 10001011                .byte % 10001000, % 10001000, % 10111000, % 10111000, % 10111000, % 10111000, % 00110101                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000                .byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000111, % 01000111, % 01000111                .byte % 01000111, % 01000111, % 01110111, % 01000111, % 01110111, % 01000111, % 01000111                .byte % 01000111, % 01000111, % 01000111, % 01000111, % 01110100, % 01110100, % 01110100                .byte % 01110100, % 01110100, % 01110111, % 01110111, % 01000111, % 01000111, % 01000111                .byte % 01000111, % 01000101

Edited by Kurt_Woloch, Sat Aug 18, 2007 11:58 AM.


#40 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,027 posts

Posted Sat Aug 18, 2007 12:20 PM

Here's the latest build of Pac-Man (at least I think it is) made by me and Blackbird:
http://w5.nuinternet...elf/pac-man.bin

I really need feedback and error-reports, so it would be nice if a few of you could try it out.


OK. I think this is a vast improvement over build 14 which was previously available, in that the game is really working. :-) But why is the new build mentioned in the WIKI, but not linked to?
One idea of mine would be to more accurately match the number of dots in the arcade by spacing the dots 2 pixels apart instead of 3 where possible. But that's not so important since the other home versions have fewer dots to eat as well.
Then... the flashing of the monsters isn't well executed in that there's a blue ghost which is also blue if dangerous, and that one doesn't flash at all. In the arcade, the blue ghosts flash between blue and white before reverting to their original colors.
The AI of the ghosts seems to be weaker in that the ghosts move around more randomly and don't seem to chase Pac Man as much. There's a thread about the exact behaviour of the ghost AI here at AtariAge:

http://www.atariage....showtopic=68707

To make up for that, the blue time seems to be a little shorter than on the Arcade. And the collision detection seems to be less forgiving than on the arcade. As far as I understand what's been written about the arcade code, it simply checks what 8x8 field Pac Man and the monsters are on (would translate to a 3x3 field here), and if they're on the same field, collision has occured.
Oh, and contrary to what the WIKI says, the game speed does speed up towards the end of each board. But Pac Man and the ghosts always seem to travel at the exact same speed (except for "blue mode"), which isn't true in the arcade (but also is that way in some home ports).

But all in all, it's a nice port. It beats the original Atari 2600 version by lengths...

#41 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 533 posts
  • Good.
  • Location:Sweden

Posted Sun Aug 19, 2007 8:03 PM

I've now modified my converter program so that it puts out the correct .byte strings for gfx.palette.data and gfx.multicolor.data. But I don't know if they're really correct because I haven't tested them. I've downloaded the development pack from the VesWiki, but setting it up would be a bit troublesome, especially in that the newest version of the picture drawing program has the picture stored in two different formats in order to compare the drawing speeds of two different routines.
So how could we go on with this? Should we go on with it at all or should we leave the picture as it is? Don't forget that my program is able to convert any picture now... albeit with mixed results. For instance, this would be a converted screenshot of Pole Position:
Pole_Position_channelf.gif


That's great Kurt, I'll try it out (I also mentioned about garbled code when using the % sign close to the digits, I'm guessing it reads a ascii code binary or something? Like /%235 or similar.


Are you willing to share you converter program? Could be used for smaller gfx as well, like multicolored monsters in Pac-man for instance - or other games.


Sorry about the palette, I couldn't see very well what color I should be using on the bubble inkjet printout of the small .jpg-picture you had added, the palette is easily changed as described before.

Use DASM and MESS to try your code out, use the multiblit routine since that's the fastest. We may have a problem removing the delay when compiling for old version VES, but removing delay in blit routine works for MESS (hence not accurate emulation) and it also works on the Channel F II and late version consoles of other brands that has the VLSI chip instead of all the logic circuitry...

VERY VERY VERY nice work!

Do Interkarate+ as well, I'm thinking of making it into a VES-game...


Playing on a few different consoles on a few different tv-sets I have come to the conclusion we need to update graphics one pixel extra around the 102x58-field, some tv:s are set wrong and shows like the upper left part of the screen, some shows the right and left edges to far out etc etc...
Graphics from now on are a square of 104x60 pixels instead, the inner square of 102x58 pixels is what we count on being visible on a modern tv, I'm guessing a square of 98x56 pixels is safe area to use for any normal TV - keep important things inside that box.

I had been thinking about doing a simple rasterscroll, like on the C64 - colorful lines that was plottet over the whole screen - even in the border - and then move them in sinus wave patterns... Should be doable, only need to change two bits to change the color of a background horisontal bar, you change a whole byte at once and you have changed four in that short time...


OK. I think this is a vast improvement over build 14 which was previously available, in that the game is really working. :-) But why is the new build mentioned in the WIKI, but not linked to?
One idea of mine would be to more accurately match the number of dots in the arcade by spacing the dots 2 pixels apart instead of 3 where possible. But that's not so important since the other home versions have fewer dots to eat as well.
Then... the flashing of the monsters isn't well executed in that there's a blue ghost which is also blue if dangerous, and that one doesn't flash at all. In the arcade, the blue ghosts flash between blue and white before reverting to their original colors.
The AI of the ghosts seems to be weaker in that the ghosts move around more randomly and don't seem to chase Pac Man as much. There's a thread about the exact behaviour of the ghost AI here at AtariAge:

http://www.atariage....showtopic=68707

To make up for that, the blue time seems to be a little shorter than on the Arcade. And the collision detection seems to be less forgiving than on the arcade. As far as I understand what's been written about the arcade code, it simply checks what 8x8 field Pac Man and the monsters are on (would translate to a 3x3 field here), and if they're on the same field, collision has occured.
Oh, and contrary to what the WIKI says, the game speed does speed up towards the end of each board. But Pac Man and the ghosts always seem to travel at the exact same speed (except for "blue mode"), which isn't true in the arcade (but also is that way in some home ports).

But all in all, it's a nice port. It beats the original Atari 2600 version by lengths...


Kurt, it's a wiki - add the link yourself. ;-)

Blackbird (Tim) tried different patterns of plotting the dots, and that was the best way he could solve it, if you show a picture with a new suggestion we can maybe do that instead. If you look again you'll notice that blue ghosts have no eyes, we're meaning to change them into multicolored monsters if it doesn't slow things down too much.

I'm aware af the weak AI, we need to work a little more on that, but we can't use the same method as in the original code since that playfield is made from a series of squares that are compared and such in ways that don't fit our x, y coordinate type of approach to it. If Tim or I had read about the original code before making Pac-man it might have followed that same concept - perhaps Tim starts from the beginning and do a complete rewrite when he's "warm in his clothes" as we say in Sweden - when has started programming again and gotten used to it (he's only 16 years old (exactly HALF my own age) so he ought to have a lot of spare time). ;-)

That collision is still an x,y issue, we check coordinates for monsters and Pac-man, and if they are too close - it's a hit, but we could perhaps "loosen" it a little... and decrease the "collision-circle" but that will probably affect the other items as well - we'll see...


Thanks, we beat the machine that beat our machine. :D

Great input Kurt, thanks a lot!
I hope Tim reads these threads as well, I think he has been here at AA, longer than I have...

Speed increases by the end since we have less and less dots to redraw, as it is written now, all dots not yet eaten are plottet after each moving object has been updated - it takes shorter time to plot less dots (and powerpills).

Edited by e5frog, Sun Aug 19, 2007 8:40 PM.


#42 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,027 posts

Posted Tue Aug 21, 2007 3:18 PM

Are you willing to share you converter program? Could be used for smaller gfx as well, like multicolored monsters in Pac-man for instance - or other games.


Well... yes, I'd be willing to share the converter program, but only the EXE file, not the source code to it. I made that mistake once... the result is now available as Karaoke Builder Studio, which I don't earn royalties from. And the converter program is in fact a slightly altered version of a program which converts to the CD+G standard instead. By the way, I've also made other variants for the program, converting for the Atari 2600 (2 colors out of 128 per scanline with a vertical resolution of 40), assuming it's possible to rewrite both colors and all playfield bytes in one scanline), the Bally Professional Arcade (4 colors out of 256 per double-scanline with a vertical resolution of 160, assuming it's possible to rewrite all four colors every other scanline), the Thomson EF-9345 graphics chip as used in the VG-8000 computer (basically, 8 colors at a resolution of 200x125, where each 4x5 block can have any 4 colors out of the 8 possible) and the TMS-9918 (video chip of the TI-99, Colecovision, MSX-1 and SG-1000 system and probably others). But all those are lacking output options that would make them really usable. That is, they all only generate a mockup picture on screen, but don't output anything (except for the CD+G version, which outputs CD+G format and has evolved to Karaoke Builder).

So.. where do you think I should upload it?

>Sorry about the palette, I couldn't see very well what color I should be using on the bubble inkjet printout of the small .jpg->picture you had added, the palette is easily changed as described before.

Oh... I see.

>Use DASM and MESS to try your code out, use the multiblit routine since that's the fastest. We may have a problem >removing the delay when compiling for old version VES, but removing delay in blit routine works for MESS (hence not >accurate emulation) and it also works on the Channel F II and late version consoles of other brands that has the VLSI chip >instead of all the logic circuitry...

Well... that's the problem, I don't want to invest too much time right now because I've got many other things to do, especially now in summer when it's still hot, and we go swimming often which regularly eats away 4-5 hours of the day.

>VERY VERY VERY nice work!

Oh, thanks!

>Do Interkarate+ as well, I'm thinking of making it into a VES-game...

OK, I'll try that one...

Here's the converted picture...

International_Karate___ChannelF.gif

However, something tells me that something doesn't work properly here... I think that game would be best with a solid gray background in the lower part, and the player sprites should consist of red body parts and red, blue and green clothes. But maybe the upper part could be done similarly to what I did here. However, here's the code for it (provided the previous picture worked, which I don't have a proof for yet):

gfx.palette.data:

				.byte % 00010100, % 01010100, % 01010101, % 00010101, % 00010000, % 00011001, % 01010100
				.byte % 01000100, % 01000100, % 01000001, % 00010001, % 00010000, % 01000100, % 01000001
				.byte % 00010000
gfx.multicolor.data:

				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000100, % 01000000
				.byte % 00000001, % 00000000, % 00000000, % 00000000, % 00001110, % 11101110, % 11100110
				.byte % 10010111, % 10110000, % 01010101, % 01010101, % 11000101, % 01010101, % 01011101
				.byte % 01000000, % 01111000, % 00000000, % 10000000, % 00000010, % 01000000, % 00110001
				.byte % 00010001, % 11010101, % 01100010, % 00100101, % 10010111, % 10011001, % 10011001
				.byte % 01011101, % 10010101, % 01010101, % 01010100, % 01110111, % 01010100, % 00000000
				.byte % 00000000, % 00000100, % 01000000, % 00000000, % 01101110, % 00000101, % 01010101
				.byte % 01011101, % 01010101, % 01110100, % 00000000, % 01000000, % 00000010, % 11000000
				.byte % 01100110, % 10101010, % 10100100, % 10101001, % 01100010, % 01100010, % 00000000
				.byte % 00000000, % 00000001, % 00010001, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000001, % 00010000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00010000, % 00000000, % 00000100, % 01010000, % 00010001, % 01000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 11101001, % 01110101, % 01011011
				.byte % 10111011, % 01011000, % 10110000, % 00000000, % 00000010, % 00110010, % 00000000
				.byte % 00100110, % 01010110, % 01011101, % 10010101, % 10010000, % 00000010, % 10001011
				.byte % 10000001, % 01100000, % 00100000, % 11010101, % 01100101, % 10011101, % 01100110
				.byte % 01010101, % 10010001, % 11010100, % 01000001, % 00000001, % 01010101, % 01110110
				.byte % 01010101, % 01010101, % 01110110, % 01011101, % 11011101, % 11010110, % 11010101
				.byte % 01010111, % 10110101, % 01010000, % 00110111, % 01010111, % 01011000, % 00010100
				.byte % 01100110, % 01011010, % 01100101, % 10011110, % 01101101, % 01011010, % 00000001
				.byte % 01000100, % 01000101, % 01000001, % 01010101, % 01110000, % 00000001, % 01010101
				.byte % 11011101, % 01010101, % 01010101, % 01110101, % 10110110, % 01010101, % 01011101
				.byte % 01010101, % 01010101, % 11010101, % 01001000, % 10000101, % 10101010, % 10100110
				.byte % 01010110, % 01101010, % 01011010, % 01100000, % 00000000, % 00000000, % 00010000
				.byte % 00010101, % 01010100, % 01000000, % 01000100, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000100, % 01000101, % 00010001, % 00010001, % 00000000, % 00000000, % 00000000
				.byte % 00010000, % 11101110, % 01000101, % 01110000, % 01010101, % 01000101, % 01010101
				.byte % 00010000, % 00000101, % 01010101, % 01010101, % 10111011, % 01110111, % 01010101
				.byte % 01110111, % 01010101, % 01010101, % 10011011, % 10010101, % 01010101, % 01100010
				.byte % 01101001, % 10101001, % 01011001, % 01101001, % 01010110, % 01100001, % 01011110
				.byte % 11010000, % 00111011, % 10000000, % 00000100, % 00010100, % 00000000, % 01000100
				.byte % 00000110, % 01010101, % 01010001, % 00010111, % 01010100, % 01000100, % 00010110
				.byte % 01010101, % 01010101, % 00000000, % 00010101, % 00011001, % 01010001, % 10010111
				.byte % 01010110, % 01101010, % 01011010, % 01001110, % 00000000, % 00000101, % 01011100
				.byte % 00000000, % 00000000, % 00010101, % 01010101, % 00000000, % 01110111, % 01000000
				.byte % 00000000, % 01100111, % 01010000, % 00000001, % 01110111, % 01000000, % 00000101
				.byte % 01010101, % 01010101, % 01000000, % 10100001, % 10011010, % 11010111, % 01100101
				.byte % 01010101, % 01010101, % 01010001, % 00100101, % 01010101, % 01010101, % 01010101
				.byte % 01000000, % 00010101, % 01110110, % 01010101, % 01010101, % 01010111, % 01100100
				.byte % 01010101, % 01010111, % 01010111, % 01010101, % 01010100, % 11001101, % 11010101
				.byte % 01010001, % 01011001, % 01100110, % 01010010, % 01101010, % 00000000, % 00000000
				.byte % 00000001, % 00010101, % 00000000, % 00010101, % 01010101, % 01000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00010000, % 00010001, % 01000101, % 00010001, % 00000101, % 00010100
				.byte % 00000000, % 00000000, % 00000101, % 01010101, % 01010101, % 01110100, % 01010011
				.byte % 10110000, % 00000000, % 01010101, % 01000111, % 01110101, % 01011101, % 11011101
				.byte % 01010101, % 01010101, % 01010001, % 01111001, % 01011101, % 10000101, % 11100101
				.byte % 01010001, % 00010101, % 01010111, % 01000000, % 00010101, % 10011001, % 11011110
				.byte % 10010101, % 01010101, % 01010101, % 01011101, % 01010101, % 01000000, % 00000001
				.byte % 00000101, % 01010101, % 00011001, % 00010100, % 01010001, % 00000000, % 00010001
				.byte % 01010001, % 01111001, % 00010000, % 00000100, % 00000001, % 01010000, % 00000001
				.byte % 00000101, % 01010000, % 10010101, % 01010110, % 10010101, % 10010101, % 01100110
				.byte % 01010101, % 01010001, % 00000001, % 01000101, % 01010101, % 00000000, % 01010101
				.byte % 01010101, % 01010101, % 01010000, % 00000001, % 01010101, % 01010101, % 01010101
				.byte % 01010101, % 01010101, % 01000001, % 01010100, % 01000100, % 01000100, % 00000001
				.byte % 10011101, % 00010001, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 01000000, % 00010100, % 01000100, % 01000100, % 01000000, % 01000100, % 01000100
				.byte % 01010101, % 01010001, % 00010001, % 00000000, % 01000100, % 01010101, % 01000100
				.byte % 00000001, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000110
				.byte % 01100110, % 01011101, % 00011101, % 11011101, % 11011101, % 11100000, % 00000101
				.byte % 01010101, % 01010111, % 01010101, % 01010101, % 01010000, % 00000001, % 01010101
				.byte % 01010111, % 01010101, % 01010101, % 01010101, % 01000000, % 00011101, % 11100110
				.byte % 00101010, % 10010101, % 01111001, % 11011011, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000101, % 01010101, % 01010101, % 01000000
				.byte % 01010101, % 01010101, % 01010101, % 01010101, % 01010101, % 01000000, % 01010101
				.byte % 01010101, % 01010100, % 00000000, % 00000000, % 00000000, % 00000000, % 00010000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000100, % 01000000, % 00000001
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00010000, % 00010000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00010001, % 00000000, % 00000000, % 00000101
				.byte % 00010100, % 01000000, % 01000100, % 01000100, % 01010101, % 01000100, % 01000100
				.byte % 01000000, % 00010001, % 01000000, % 01000100, % 00000000, % 00000001, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000101, % 01110101, % 11011110, % 11111111
				.byte % 00111111, % 11111111, % 11111111, % 11111111, % 11111111, % 11111111, % 01111111
				.byte % 00110011, % 11000100, % 00000100, % 11111111, % 11111110, % 01011111, % 11111111
				.byte % 11001111, % 11001111, % 10111001, % 01100110, % 01100101, % 10011001, % 01111111
				.byte % 11111111, % 11010101, % 10111011, % 00110000, % 11001111, % 00110011, % 00110011
				.byte % 00110011, % 00110011, % 00110011, % 11101101, % 11111111, % 11110100, % 10101010
				.byte % 10010111, % 11001100, % 11110110, % 11001100, % 11001111, % 11001111, % 11111111
				.byte % 11001100, % 11111011, % 10010101, % 01010110, % 01100110, % 01101100, % 11111111
				.byte % 00111111, % 11111111, % 00111111, % 11111111, % 11111111, % 11111111, % 11111111
				.byte % 11001111, % 01101100, % 11001100, % 01000000, % 00000000, % 01001111, % 11111110
				.byte % 11011111, % 11111111, % 11001111, % 11001100, % 11111111, % 11111111, % 00110011
				.byte % 11100101, % 01111111, % 11111111, % 11111110, % 01111111, % 00110011, % 00111111
				.byte % 00110011, % 00111100, % 11110011, % 11001100, % 11001111, % 11111001, % 11111111
				.byte % 11111111, % 01000000, % 01111111, % 11110011, % 11010101, % 11110011, % 11001111
				.byte % 11001111, % 11111110, % 01010101, % 11111111, % 11111101, % 10010111, % 11110100
				.byte % 00111101, % 11011111, % 00111111, % 11111111, % 11111111, % 11111111, % 11111111
				.byte % 11111111, % 11111111, % 11111101, % 01111111, % 11000111, % 01000010, % 00100000
				.byte % 01100101, % 11111110, % 01101111, % 11111111, % 11001111, % 11001100, % 00001101
				.byte % 10011011, % 01011101, % 10011101, % 01100111, % 10010101, % 10011000, % 01111111
				.byte % 11001111, % 00110011, % 00111100, % 11011011, % 00110001, % 10011100, % 11001100
				.byte % 11101110, % 11001100, % 11011011, % 01100111, % 01100111, % 01111100, % 11110101
				.byte % 11011110, % 11001111, % 11001111, % 11110001, % 10001101, % 11011011, % 10011001
				.byte % 10010111, % 10011110, % 00000001, % 01010000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000100, % 00000100, % 00000000, % 01000000, % 00000000, % 00000000
				.byte % 00011110, % 01100100, % 11011011, % 01101110, % 00100111, % 10011110, % 01100010
				.byte % 11011100, % 01111001, % 11011101, % 11010011, % 10011110, % 01110011, % 10110100
				.byte % 01100010, % 11011001, % 11100111, % 10011110, % 01111001, % 11100100, % 01001110
				.byte % 01101101, % 00010110, % 01011001, % 10011110, % 01110000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000100, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00111001, % 11001110, % 01111001, % 11100111, % 01111011
				.byte % 00010000, % 01110100, % 00011000, % 10001000, % 10011001, % 10111001, % 11100111
				.byte % 10011001, % 00011011, % 10011101, % 00011001, % 10110011, % 00010001, % 11100100
				.byte % 11011011, % 10000001, % 10001000, % 01101101, % 11100111, % 01111001, % 11010000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00010001, % 00011011, % 01101100
				.byte % 11011000, % 10011000, % 01101110, % 11001011, % 01101101, % 11001101, % 11001101
				.byte % 00010001, % 00010011, % 00110111, % 10110001, % 11011011, % 10011101, % 10100100
				.byte % 01101110, % 01111000, % 10011110, % 01110000, % 01110111, % 10011110, % 01000010
				.byte % 01101110, % 01000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00111011
				.byte % 10110110, % 11011001, % 10110111, % 01110111, % 00110110, % 01000111, % 10011110
				.byte % 01100000, % 01100010, % 11001110, % 11100010, % 01100010, % 00100110, % 11100111
				.byte % 01101100, % 10011110, % 11010011, % 01101101, % 11001011, % 10011011, % 10010110
				.byte % 11011011, % 00110011, % 01111001, % 11100000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 01000000, % 01000100, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 10101001, % 00010000, % 10000011, % 00000000, % 00001001, % 10000000
				.byte % 00100000, % 00001001, % 11011101, % 10110111, % 01100100, % 01110111, % 01110111
				.byte % 01110101, % 01000000, % 00000111, % 01111001, % 10111001, % 00000000, % 10011001
				.byte % 11011101, % 00000000, % 00000010, % 01100110, % 00000000, % 00100000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00010000, % 00000000, % 00000000, % 01000001
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00010100, % 00000000
				.byte % 00000000, % 00000001, % 00000000, % 00000000, % 00010000, % 01000000, % 00000000
				.byte % 00000100, % 00000000, % 00000000, % 00000000, % 01000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000001, % 01000100, % 00000001
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 01000000
				.byte % 00000001, % 11011000, % 01111001, % 10000010, % 01101100, % 01110110, % 11011011
				.byte % 01110000, % 11011011, % 00100010, % 00001000, % 00111000, % 00011000, % 11101101
				.byte % 01010111, % 01111011, % 10000000, % 00000111, % 01000101, % 01111011, % 10111001
				.byte % 10111011, % 11011101, % 00000000, % 00000011, % 01110100, % 00000000, % 00010000
				.byte % 00000000, % 00000000, % 00010000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000001, % 01010001, % 01000000, % 00000000
				.byte % 00000100, % 01000000, % 01000000, % 00000000, % 00000100, % 01000000, % 01000000
				.byte % 00000000, % 00000000, % 00000000, % 10010011, % 00110000, % 01110000, % 01110001
				.byte % 10110010, % 01111001, % 10111001, % 10110110, % 01110111, % 01110111, % 01100111
				.byte % 10011101, % 01011000, % 00000000, % 01100100, % 01011100, % 00000001, % 01000101
				.byte % 00010001, % 10110111, % 00111111, % 11111100, % 00100111, % 01100000, % 10111000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000001, % 00010000
				.byte % 01000000, % 00000001, % 00000000, % 00000000, % 00000000, % 00000000, % 01000000
				.byte % 00000000, % 00010001, % 00000000, % 00000000, % 00000111, % 01110110, % 01100010
				.byte % 11011001, % 10111011, % 01001101, % 10110111, % 01110111, % 00011011, % 10011000
				.byte % 11100111, % 10011110, % 01111001, % 11010101, % 01010100, % 00000111, % 10011110
				.byte % 01000101, % 01010101, % 00000110, % 01111111, % 11111111, % 11110011, % 11111110
				.byte % 11011101, % 11010101, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000001, % 00010101, % 01000101, % 00000000, % 00000000, % 00010100, % 01000000
				.byte % 00000000, % 00000000, % 00000000, % 00010000, % 00000100, % 00000000, % 00000000
				.byte % 01101100, % 01110111, % 01101101, % 11010010, % 01100100, % 11100110, % 01111001
				.byte % 11100111, % 00000111, % 00001001, % 11100111, % 00000000, % 00000000, % 00000011
				.byte % 00000101, % 10110000, % 00000101, % 01010111, % 01000101, % 11111111, % 00000101
				.byte % 11011111, % 11111101, % 00000111, % 10011110, % 00000000, % 00000001, % 00000000
				.byte % 00010000, % 00000100, % 00000000, % 01000000, % 00000001, % 00000000, % 00000000
				.byte % 00010000, % 00000000, % 00000000, % 01000001, % 00000100, % 01000000, % 00000000
				.byte % 00010001, % 00010000, % 00010000, % 00000000, % 00010000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00010100, % 00000001, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000100, % 00000000, % 00000000, % 00010000, % 00000000, % 00000000, % 00011110
				.byte % 01111001, % 11100111, % 10010011, % 10011101, % 10110011, % 01111011, % 01101101
				.byte % 10110110, % 11011011, % 01111000, % 01111001, % 11100111, % 10010000, % 00011000
				.byte % 10011100, % 01010101, % 01010101, % 01111000, % 00111000, % 01111001, % 11101101
				.byte % 10000100, % 01001011, % 10011110, % 01110000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000100, % 00000000
				.byte % 00000000, % 00000000, % 01001110, % 01111001, % 11100000, % 01101100, % 00000110
				.byte % 00001001, % 11100000, % 00000100, % 11100111, % 10010011, % 00000000, % 01111000
				.byte % 01000001, % 10110111, % 00000011, % 10011101, % 01010111, % 10011100, % 01101101
				.byte % 10110110, % 11011001, % 11010000, % 01011101, % 10000111, % 10010000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000001, % 00000000, % 00000000, % 00011100, % 00000000, % 00000000, % 00110110
				.byte % 11010000, % 00000001, % 11011110, % 01110111, % 10011100, % 00000000, % 00000010
				.byte % 01000000, % 00000000, % 00111011, % 01111001, % 00000101, % 01010101, % 11100100
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 11100100, % 01000100, % 00000000
				.byte % 00010000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000001
				.byte % 00000001, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000100, % 00000000, % 00010001, % 00010000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000100, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000010, % 01110000, % 01101101, % 11100100, % 11100111
				.byte % 10011110, % 01111001, % 11100111, % 10000110, % 11011011, % 01101101, % 00111001
				.byte % 11100111, % 10010011, % 00011011, % 01101101, % 10110110, % 11011000, % 11011011
				.byte % 01101101, % 00101110, % 01111001, % 00000001, % 11100000, % 10011110, % 01111001
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000, % 00000000
				.byte % 00000000, % 00000000, % 00000000, % 00000000, % 00000001, % 11100100, % 11100111
				.byte % 10011110, % 01111001, % 11100111, % 10011110, % 01111001, % 11011110, % 01111001
				.byte % 11100111, % 10011110, % 01111001, % 11100111, % 10011110, % 01111001, % 11100111
				.byte % 10011110, % 01111001, % 11100111, % 10011101, % 10110110, % 11011011, % 01101101
				.byte % 11100111, % 10011110

OK....

KurtAN???

Kurt, it's a wiki - add the link yourself. ;-)


OK, I'll try to do it... I was afraid everyone would fall over me if I did that.

Blackbird (Tim) tried different patterns of plotting the dots, and that was the best way he could solve it, if you show a picture with a new suggestion we can maybe do that instead. If you look again you'll notice that blue ghosts have no eyes, we're meaning to change them into multicolored monsters if it doesn't slow things down too much.


Hmm... let's see... how about that one?

Pacman_Ves_Mockup.gif
I've also included a multicolored blue ghost there. For the normal ghosts, I don't think multicolor makes too much sense, since they're only 5x5 pixels anyway. For the blue ghosts, however, red eyes and a grey "dot" which could be a nose or mouth would look nice. When flashing, they should flash to red with blue eyes, to differentiate them from "normal" red ghosts (they can't be flashed to white, and grey is the background color so that they would be invisible).

I'm aware af the weak AI, we need to work a little more on that, but we can't use the same method as in the original code since that playfield is made from a series of squares that are compared and such in ways that don't fit our x, y coordinate type of approach to it.

I wouldn't see it that way. One square in the arcade is roughly 2 pixels in your version.

That collision is still an x,y issue, we check coordinates for monsters and Pac-man, and if they are too close - it's a hit, but we could perhaps "loosen" it a little... and decrease the "collision-circle" but that will probably affect the other items as well - we'll see...

Well... I'd say the "harmable" portion of each object should be the 3x3 inner square (safe for maybe the dots to eat).

Speed increases by the end since we have less and less dots to redraw, as it is written now, all dots not yet eaten are plottet after each moving object has been updated - it takes shorter time to plot less dots (and powerpills).

I see... so that's the reason why it's getting faster. Wouldn't it be feasible to only redraw those dots which are near the moving objects?

#43 Jess Ragan OFFLINE  

Jess Ragan

    Phanto of the Opera

  • 8,881 posts
  • Keys and Thank You
  • Location:MI

Posted Wed Aug 22, 2007 1:20 AM

Holy hemorrhoids! You've made a Pac-Man translation for the Fairchild Channel F? This is fifteen kinds of nuts, and the craziest part is that the conversion is actually pretty good! I think I'll have to post about this on my blog...

EDIT: This is totally the wrong place for discussing homebrew game development. Somebody move this thread over to the Homebrew Discussion forum!

Edited by Jess Ragan, Wed Aug 22, 2007 4:38 AM.


#44 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 533 posts
  • Good.
  • Location:Sweden

Posted Wed Aug 22, 2007 7:55 PM

I've contacted Namco Bandai about releasing Pac-man for VES/Channel F


.... so it might be a gaming publication eventually.

Sorry for making the thread into Channel F homebrew. ;-)



Kurtan is a Swedish nickname for Kurt - I'll send you a message and you can e-mail the converter-.exe if you like.

/ Freddan

#45 FND OFFLINE  

FND

    Stargunner

  • Topic Starter
  • 1,155 posts
  • Location:Cal. Bay area

Posted Wed Aug 22, 2007 8:25 PM

Sorry for making the thread into Channel F homebrew. ;-)



Not a problem for me, it keeps my post bumped ;)

FND

#46 Nognir OFFLINE  

Nognir

    Dragonstomper

  • 750 posts
  • Location:Regenstauf (near Regensburg) Bavaria, Germany

Posted Thu Aug 23, 2007 1:51 PM

I only have a question here..

Is Channel F programming harder than programming the Atari 2600?
I downloaded the development manual from the VESWiki but I haven't read anything yet ^^

#47 TwiliteZoner OFFLINE  

TwiliteZoner

    Dragonstomper

  • 633 posts
  • Location:Atlanta, GA

Posted Fri Aug 24, 2007 4:29 PM

Here's the latest build of Pac-Man (at least I think it is) made by me and Blackbird:
http://w5.nuinternet...elf/pac-man.bin

Wow! I just tried this out and i must say it's darn impressive!!! :-o
I wouldn't have thought the channel-f could do such an accurate port of pac-man (considering it's technical limitations)!
:thumbsup:


I have to agree that is very impressive. Is there a Donkey Kong conversion in the works :)

#48 supercat OFFLINE  

supercat

    Quadrunner

  • 6,399 posts

Posted Fri Aug 24, 2007 6:06 PM

Is Channel F programming harder than programming the Atari 2600?


I've never tried Channel F programming, but my impression is that the challenges and possibilities are completely different.

On the Channel F, graphics are generated using a bitmap screen. To draw things, you write the appropriate data to the screen. The screen writing is a bit slow and cumbersome, and the F8 instruction set itself is not terribly handy, but if your code doesn't write to screen quickly enough to make the game run as fast as you'd like, the only bad thing that will do is make the game run slower than you'd like.

On the Atari 2600, graphics are generated on the fly by the processor. Data is loaded into the TIA chip just in time for it to display it; it's then overwritten as soon as it's displayed. On the Fairchild (or indeed, most video systems) the contents of an entire frame will be stored someplace (in a DRAM chip, in the case of the Fairchild) even though the television set will only be "looking" at a tiny portion at a time. On the 2600, by contrast, only a few simple display objects exist at any given time; those display objects are constantly manipulated to take on the desired appearance just before each time the beam reaches them.

The Atari 2600 thus requires a level of precision in coding beyond that required on other systems. Often times there will be zero timing slop in a routine. Things must happen precisely at the right time, or else the display won't appear correctly. Emulation can be extremely helpful in trying to track down such issues. but they don't always make it easy.

#49 e5frog OFFLINE  

e5frog

    Dragonstomper

  • 533 posts
  • Good.
  • Location:Sweden

Posted Sat Aug 25, 2007 4:30 PM

Donkey Kong would be great...



Go for it!


Any "Game & Watch" game should be quite easily managed as well... even easier with Blackbird's routines - the tile routine for graphics, multi-blit drawing and such. Perhaps it would be possible even to fit several games into a 8kB (-7 bytes) Multi-Cart slot...

All it takes is one dedicated person and perhaps someone to help him - and a lot of time - I think VES Pac-man has been in the works for three years now - or is it four?

I'd like an improved version of Tetris, as I describe it on my competition page:
http://w5.nuinternet...tion/index.html
(My Fairchild System gallery will appear in a pop-up window)

The latest version speeds up to quick and the blocks do not appear in "lowest profile" which makes it darn difficult to place a 4x1 block in the side position when the board is half full... I managed to change it by swapping the block-graphics around, but that screwed up the preview as the blocks don't fit (in the space left between the two playfields) unless they're in "upright" position.
I guess it can be hacked further if disassembled and re-coded, but that's a lot of work and Peter Trauner might object... Too bad he doesn't want to release the code. :-(


Edit: spelling mistake

Edited by e5frog, Sat Aug 25, 2007 4:32 PM.


#50 Kurt_Woloch OFFLINE  

Kurt_Woloch

    Stargunner

  • 1,027 posts

Posted Sat Sep 1, 2007 1:50 AM

Speaking of the Channel F... I've learned that there also was a home computer in the late 70's based on the F8 CPU, called the VideoBrain. It's described on AtariProtos.com. Does anyone know how to program that thing? From what I get from the screenshots, it seems to be a character-based system showing 10 lines x 18 columns, where each character can have one of 16 foreground colors, but the whole screen has the same background color. The characters probably have a matrix of 8x16 pixels or something like that, and at least 16 of them are redefinable. There is one program shown where you can draw on the screen, but the actual drawable resolution here seems to be 32x32 because the image is mirrored horizontally as well as vertically. The whole system only has 1K of RAM, which is less than the Channel F has! But there's no info on how exactly the graphics work and how to program it...




0 user(s) are browsing this forum

0 members, 0 guests, 0 anonymous users