Tecnobytes is creating a new batch of GFX9000!

Page 6/15
1 | 2 | 3 | 4 | 5 | | 7 | 8 | 9 | 10 | 11

By hit9918

Prophet (2923)

hit9918's picture

28-02-2016, 10:51

I am stuck with "I cant even vpoke".
I code openmsx.
The below code ends up with vram pointer at 0x400001
If one removes the vram write with out &h60, pointer is at 0x7c0000 where I set it up.
Mirror a 7c to 40 is funny.
The nametable is said to be up there and I cant get at it.
The register setup I copied from xtazy.

1 out &h6f,0 'init

10 for i = 0 to 23 : read a
12 out (&h64),128+i		'register write mode: 128 + register number
14 out (&h63),a
16 next

100 p = &h7C : a = 0 : gosub 10000 : out &h60,1
110 'for i = 0 to 767 : out &h60,(i+1) and 255 : next
120 'for i = 0 to 767 : out &h60,0 and 255 : next
130 'p = &h7E : a = 0 : gosub 10000
140 'for i = 0 to 767 : out &h60,0 and 255 : out &h60,0 and 255 : next

200 'p = &h00 : a = 0 : gosub 10000
210 'for y = 0 to 7 : for x = 0 to 31 : for i = 0 to 7 : out &h60,0 : next i,x,y
220 'p = &h40 : a = 0 : gosub 10000
230 'for y = 0 to 7 : for x = 0 to 31 : for i = 0 to 7 : out &h60,0 : next i,x,y




9990 beep : sound 8,12 : for i = 1 to 2000 : next : beep
9999 stop

10000 'vram write address = p*65536 + a
10005 out (&h64),0		'vram write mode: 0
10010 out (&h63),a and 255
10020 out (&h63),(a / 256) and 255
10030 out (&h63),p 'bit 7 address increment inhibit
10050 return


20000 'regs
20010 'data 0,0,4,0
20020 'data 0,0,&h82,0
20030 'data &hc2,0,0,0
20040 'data 0,&h40,0,0
20050 'data 0,0,0,0
20060 'data 0,&h3b,5,0

21000 'regs
21010 data 0,0,0,0
21020 data 0,0,&h05,0
21030 data &h82,0,0,0
21040 data 0,&h04,&h04,0
21050 data 0,&h80,&h80,0
21060 data &h18,&h40,0,0

50000 'Physical mapping: Addresses 00000-3FFFF in VRAM0 and 40000-7FFFF in VRAM1. 
50010 '00000-3FDFF (Sprite) Pattern Data (Layer A)  
50020 '3FE00-3FFFF Sprite Attribute Table  
50030 '40000-7BFFF Pattern Data (Layer B)  
50040 '7C000-7DFFF PNT(A) - Pattern Name Table (Layer A)  
50050 '7E000-7FFFF PNT(B) - Pattern Name Table (Layer B)  

By hit9918

Prophet (2923)

hit9918's picture

28-02-2016, 11:01

ok forget it. I noob read the addresses wrong. back to the drawing board.

By Kai Magazine

Paragon (1418)

Kai Magazine's picture

28-02-2016, 11:54

mars2000you wrote:
Kai Magazine wrote:

I did read (on msx banzai) that powerbasic is a modification of turbobasic (basic kun) and someone modified the graphic commands to make it compatible with gfx9000, but it only works on r800. That is all I know.
If there is a rom version which works on msx2, where can I find it?? I am most interested in it!

Here's this rom : http://www.msxblue.com/temp2/powerbasic.zip

Not tested, but probably only for TurboR ...

At first sight, it can be divided in 3 parts :
Offset 0000 to offset 7FFF = modified version of BIOS+BASIC TurboR GT (version 4.2 of BASIC !)
Offset 8000 to offset BFFF = GFX-9000 BASIC version 4.1 is mentioned in modified version of turboR ext.rom
Offset C000 to offset FFFF = X-BASIC modified to support GFX-9000

Thank you! I will test it right now!

By Kai Magazine

Paragon (1418)

Kai Magazine's picture

28-02-2016, 12:02

hit9918 wrote:

ok forget it. I noob read the addresses wrong. back to the drawing board.

Interesting, hit9918, please keep sharing with us your advances Smile

By Kai Magazine

Paragon (1418)

Kai Magazine's picture

28-02-2016, 12:44

ok, this is embarassing...
I am testing the powerbasic rom on openmsx but nothing happens.
I am guessing the rom must be enabled by writting some code or it has to be loaded in a specific way (I tested all the mappers on openmsx).
I am sorry I am so useless with hardware and ASM... (I just enjoy creating videogames, anything beyond this is just a headdick for me, I am completelly clueless)
Any help?

By mars2000you

Enlighted (6254)

mars2000you's picture

28-02-2016, 12:53

I think you need to create a new TurboR machine in openMSX as the BIOS/BASIC and EXT roms are modified (and probably EXT and XBASIC roms need to remain together in the same subslot, but it's just a guessing).

Maybe someone of the openMSX team could help you. I know that creating a TurboR machine in openMSX is a pain in the ass, because some limitations have been implemented for TurboR machines to block using of small roms as in blueMSX instead of the big firmware rom that actually includes the small roms.

By Kai Magazine

Paragon (1418)

Kai Magazine's picture

28-02-2016, 12:56

That is a good idea, mars, thanks.
The idea is to make it work on a msx2, but offcourse first I will try to make it work on turbo-r.
Anyway, even if I manage to make it work on openmsx, the problem will be to make it work on a real msx.
I flashed the rom on a flashable cartridge and the results are the same: a whole bunch of nothing.
This will not be easy, I see...

Thank you for your help! I very much appreciate it Smile

By hit9918

Prophet (2923)

hit9918's picture

28-02-2016, 15:47

ok I got a demo that sorts out charset and nametable in plain BASIC.
frustrating hours because one doesn't know.
done that, it is all the same patterns again as known from 9958.
the 9990 has much more, but not in lots bells and whistles, but in one big mechanism.

edit: sprites added. a whole screen wide, ok? Big smile
their patterns are same location as charset of top layer.

1 out &h6f,0 'init superimpose

10 for i = 0 to 23 : read a
12 out (&h64),128+i		'register write mode: 128 + register number
14 out (&h63),a
16 next

60 for i = 0 to 15		'palette
61 out (&h64),128+14 : out (&h63),i*4
70 out (&h61),i*2 : out (&h61),i*2 : out (&h61),i*1 + 13
80 next

100 p = 0 : a = 0 : gosub 10000	'charset in screen 5 format
110 for y = 0 to 15		'init two row of chars
115 for x = 0 to 31 : for i = 0 to 3 : out &h60,(x and 15)*17 : next i,x,y

200 p = 4 : a = 0 : gosub 10000	'second charset in screen 5 format
210 for y = 0 to 7		'init one row of chars
215 for x = 0 to 31 : for i = 0 to 3 : out &h60,((x+y) and 15)*17 : next i,x,y


299 '16bit nametable little endian

300 for y = 0 to 25
310 p = 7 : a = &hc000+64*2*y : gosub 10000 '64 chars wide, 2 byte per char
320 for x = 0 to 31
330 out &h60,x and 15 : out &h60,0
340 next x,y


399 'lower layer 16bit nametable little endian

400 for y = 0 to 25
410 p = 7 : a = &he000+64*2*y : gosub 10000
420 for x = 0 to 31
430 out &h60,0 and 15 : out &h60,0
440 next x,y

500 'sprite attribute table, 4 bytes per sprite: Y, pattern, X, todo(x high?)
510 p = 3 : a = &hfe00 : gosub 10000
515 for i = 0 to 15
520 sy = int(sin(i*2*3.1415926/16)*5+100) : ? sy
525 out &h60,sy : out &h60,2 : out &h60,i*16+3 : out &h60,0
530 next


9990 beep : sound 8,12 : for i = 1 to 2000 : next : beep
9999 stop

10000 'vram write address = p*65536 + a . out &h60 vpokes with autoincrement.
10005 out (&h64),0		'vram write mode: 0
10006 defusr1 = a		'to get at H,L
10010 xx = peek(&hf39c) : out (&h63),xx : '?xx;
10020 xx = peek(&hf39d) : out (&h63),xx : '?xx;"."
10030 out (&h63),p 'bit 7 address increment inhibit
10050 return


21000 'regs
21010 data 0,0,0,0
21020 data 0,0,&h05,0
21030 data &h82,0,0,0
21040 data 0,0,0,0
21050 data 0,0,0,0
21060 data 0,0,0,0
21070 data 0


50000 'Physical mapping: Addresses 00000-3FFFF in VRAM0 and 40000-7FFFF in VRAM1. 
50010 '00000-3FDFF (Sprite) Pattern Data (Layer A)  
50020 '3FE00-3FFFF Sprite Attribute Table  
50030 '40000-7BFFF Pattern Data (Layer B)  
50040 '7C000-7DFFF PNT(A) - Pattern Name Table (Layer A)  
50050 '7E000-7FFFF PNT(B) - Pattern Name Table (Layer B)  

By Daemos

Paragon (1972)

Daemos's picture

28-02-2016, 18:14

maybe not the best question from me ever but does anyone have a link to a very detailed documentation on how to code for the V9990? Think something like the V9938 programmers guide.

By mars2000you

Enlighted (6254)

mars2000you's picture

28-02-2016, 18:18

Page 6/15
1 | 2 | 3 | 4 | 5 | | 7 | 8 | 9 | 10 | 11