summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Angelo Salese <angelosa@users.noreply.github.com>2010-01-14 22:08:27 +0000
committer Angelo Salese <angelosa@users.noreply.github.com>2010-01-14 22:08:27 +0000
commit1ceb85b680179f7534173ef90ecb5213aa519257 (patch)
tree5692dc4002b77c2a11987616742d4cb4688161e7 /src
parent1e3b9f4bc80cb5c731cd743d0395a5c66b59832a (diff)
More improvements, probably needs references ...
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/cybertnk.c112
1 files changed, 57 insertions, 55 deletions
diff --git a/src/mame/drivers/cybertnk.c b/src/mame/drivers/cybertnk.c
index 388a9483668..7e0208a7c96 100644
--- a/src/mame/drivers/cybertnk.c
+++ b/src/mame/drivers/cybertnk.c
@@ -247,6 +247,7 @@ static VIDEO_UPDATE( cybertnk )
}
/* spriteram / blitter (BARE-BONES, looks pretty complex) */
+ if(1)
{
const UINT8 *blit_ram = memory_region(screen->machine,"spr_gfx");
int offs,x,y,xsize,ysize,yi,xi,col_bank;
@@ -254,12 +255,12 @@ static VIDEO_UPDATE( cybertnk )
for(offs=0;offs<0x1000/2;offs+=8)
{
- x = spr_ram[offs+(0xa/2)] & 0x1ff;
- y = spr_ram[offs+(0x8/2)] & 0x0ff;
- spr_offs = spr_ram[offs+(0x2/2)] << 2;
- xsize = 0x62;
- ysize = 0x9a;
- col_bank = spr_ram[offs+(0x4/2)] & 0xff;
+ x = (spr_ram[offs+(0xa/2)] & 0x1ff);
+ y = (spr_ram[offs+(0x8/2)] & 0x0ff);
+ spr_offs = (((spr_ram[offs+(0x0/2)] & 7) << 16) | (spr_ram[offs+(0x2/2)])) << 2;
+ xsize = ((spr_ram[offs+(0xc/2)] & 0x000f)+1) << 3;
+ ysize = (spr_ram[offs+(0x0/2)] & 0x3f00) >> 6;
+ col_bank = spr_ram[offs+(0x4/2)] & 0x0ff;
for(yi = 0;yi < ysize;yi++)
{
@@ -267,43 +268,43 @@ static VIDEO_UPDATE( cybertnk )
{
UINT32 color;
UINT16 dot;
+ int shift_pen;
+ int x_dec; //helpers
color = ((blit_ram[spr_offs+0] & 0xff) << 24);
color|= ((blit_ram[spr_offs+1] & 0xff) << 16);
color|= ((blit_ram[spr_offs+2] & 0xff) << 8);
color|= ((blit_ram[spr_offs+3] & 0xff) << 0);
- dot = (color & 0xf0000000) >> 28;
- dot|= col_bank<<4;
- *BITMAP_ADDR16(bitmap, y+yi, x+1+xi) = screen->machine->pens[dot];
-
- dot = (color & 0x0f000000) >> 24;
- dot|= col_bank<<4;
- *BITMAP_ADDR16(bitmap, y+yi, x+5+xi) = screen->machine->pens[dot];
-
- dot = (color & 0x00f00000) >> 20;
- dot|= col_bank<<4;
- *BITMAP_ADDR16(bitmap, y+yi, x+0+xi) = screen->machine->pens[dot];
-
- dot = (color & 0x000f0000) >> 16;
- dot|= col_bank<<4;
- *BITMAP_ADDR16(bitmap, y+yi, x+4+xi) = screen->machine->pens[dot];
-
- dot = (color & 0x0000f000) >> 12;
- dot|= col_bank<<4;
- *BITMAP_ADDR16(bitmap, y+yi, x+3+xi) = screen->machine->pens[dot];
-
- dot = (color & 0x00000f00) >> 8;
- dot|= col_bank<<4;
- *BITMAP_ADDR16(bitmap, y+yi, x+7+xi) = screen->machine->pens[dot];
-
- dot = (color & 0x000000f0) >> 4;
- dot|= col_bank<<4;
- *BITMAP_ADDR16(bitmap, y+yi, x+2+xi) = screen->machine->pens[dot];
-
- dot = (color & 0x0000000f) >> 0;
- dot|= col_bank<<4;
- *BITMAP_ADDR16(bitmap, y+yi, x+6+xi) = screen->machine->pens[dot];
+ shift_pen = 28;
+ x_dec = 0;
+
+ while(x_dec < 4 && x_dec+xi <= xsize)
+ {
+ dot = (color >> shift_pen) & 0xf;
+ if(dot != 0) // transparent pen
+ {
+ dot|= col_bank<<4;
+ *BITMAP_ADDR16(bitmap, y+yi, x+x_dec+xi) = screen->machine->pens[dot];
+ }
+ shift_pen -= 8;
+ x_dec++;
+ }
+
+ shift_pen = 24;
+ x_dec = 4;
+
+ while(x_dec < 8 && x_dec+xi <= xsize)
+ {
+ dot = (color >> shift_pen) & 0xf;
+ if(dot != 0) // transparent pen
+ {
+ dot|= col_bank<<4;
+ *BITMAP_ADDR16(bitmap, y+yi, x+x_dec+xi) = screen->machine->pens[dot];
+ }
+ shift_pen -= 8;
+ x_dec++;
+ }
spr_offs+=4;
}
@@ -314,8 +315,9 @@ static VIDEO_UPDATE( cybertnk )
tilemap_draw(bitmap,cliprect,tx_tilemap,0,0);
-//0x62 0x9a 11c2d0
-//0x62 0x9a 11e1e4
+//0x62 0x9a 1c2d0
+//0x62 0x9a 1e1e4
+//0x20 0x9c 2011c
if(0) //sprite gfx debug viewer
{
@@ -820,22 +822,22 @@ ROM_START( cybertnk )
/* TODO: fix the rom loading accordingly*/
ROM_REGION( 0x200000, "spr_gfx", 0 )
- ROM_LOAD32_BYTE( "c01.93" , 0x100000, 0x20000, CRC(b5ee3de2) SHA1(77b9a2818f36826891e510e8550f1025bacfa496) )
- ROM_LOAD32_BYTE( "c02.92" , 0x100001, 0x20000, CRC(1f857d79) SHA1(f410d50970c10814b80baab27cbe69965bf0ccc0) )
- ROM_LOAD32_BYTE( "c03.91" , 0x100002, 0x20000, CRC(d70a93e2) SHA1(e64bb10c58b27def4882f3006784be56de11b812) )
- ROM_LOAD32_BYTE( "c04.90" , 0x100003, 0x20000, CRC(04d6fdc2) SHA1(56f8091c1a010014e951f5f47084e1400006123e) )
- ROM_LOAD32_BYTE( "c05.102", 0x080000, 0x20000, CRC(3f537490) SHA1(12d6545d29dda9f88019040fa33c73a22a2a213b) )
- ROM_LOAD32_BYTE( "c06.101", 0x080001, 0x20000, CRC(ff69c6a4) SHA1(badd20d26ba771780aebf733e1fbd1d37aa66f9b) )
- ROM_LOAD32_BYTE( "c07.100", 0x080002, 0x20000, CRC(5e8eba75) SHA1(6d0c1916517802acf808c8edc8e0b6074bdc90be) )
- ROM_LOAD32_BYTE( "c08.98" , 0x080003, 0x20000, CRC(f0820ddd) SHA1(7fb6c7d66ff96148f14921bc8d0cc0c65ffce4c4) )
- ROM_LOAD32_BYTE( "c09.109", 0x000000, 0x20000, CRC(080f87c3) SHA1(aedebc22ff03d4cc710e71ca14e09c7808f59c72) ) //correct
- ROM_LOAD32_BYTE( "c10.108", 0x000001, 0x20000, CRC(777c6a62) SHA1(4684d1c5d88b37ecb20002b7aa4814bf566e7d4b) )
- ROM_LOAD32_BYTE( "c11.107", 0x000002, 0x20000, CRC(330ca5a1) SHA1(4409da231a5abcec8c7d2d66eefdfd2019a322db) )
- ROM_LOAD32_BYTE( "c12.106", 0x000003, 0x20000, CRC(c1ec8e61) SHA1(09f2f4ddc100e5675c9bd82c200718fb0b69655e) )
- ROM_LOAD32_BYTE( "c13.119", 0x180000, 0x20000, CRC(4e22a7e0) SHA1(69cc7dd528b8af0c28b448285768a3ed079099ba) )
- ROM_LOAD32_BYTE( "c14.118", 0x180001, 0x20000, CRC(bdbd6232) SHA1(94b0741d5eced558723dda32a89aa2b747cdcbbd) )
- ROM_LOAD32_BYTE( "c15.117", 0x180002, 0x20000, CRC(f163d768) SHA1(e54e31a6f956f7de52b59bcdd0cd4ac1662b5664) )
- ROM_LOAD32_BYTE( "c16.116", 0x180003, 0x20000, CRC(5e5017c4) SHA1(586cd729630f00cbaf10d1036edebed1672bc532) )
+ ROM_LOAD32_BYTE( "c01.93" , 0x000001, 0x20000, CRC(b5ee3de2) SHA1(77b9a2818f36826891e510e8550f1025bacfa496) )
+ ROM_LOAD32_BYTE( "c02.92" , 0x000000, 0x20000, CRC(1f857d79) SHA1(f410d50970c10814b80baab27cbe69965bf0ccc0) )
+ ROM_LOAD32_BYTE( "c03.91" , 0x000003, 0x20000, CRC(d70a93e2) SHA1(e64bb10c58b27def4882f3006784be56de11b812) )
+ ROM_LOAD32_BYTE( "c04.90" , 0x000002, 0x20000, CRC(04d6fdc2) SHA1(56f8091c1a010014e951f5f47084e1400006123e) )
+ ROM_LOAD32_BYTE( "c05.102", 0x100001, 0x20000, CRC(3f537490) SHA1(12d6545d29dda9f88019040fa33c73a22a2a213b) )
+ ROM_LOAD32_BYTE( "c06.101", 0x100000, 0x20000, CRC(ff69c6a4) SHA1(badd20d26ba771780aebf733e1fbd1d37aa66f9b) )
+ ROM_LOAD32_BYTE( "c07.100", 0x100003, 0x20000, CRC(5e8eba75) SHA1(6d0c1916517802acf808c8edc8e0b6074bdc90be) )
+ ROM_LOAD32_BYTE( "c08.98" , 0x100002, 0x20000, CRC(f0820ddd) SHA1(7fb6c7d66ff96148f14921bc8d0cc0c65ffce4c4) )
+ ROM_LOAD32_BYTE( "c09.109", 0x080001, 0x20000, CRC(080f87c3) SHA1(aedebc22ff03d4cc710e71ca14e09c7808f59c72) ) //correct
+ ROM_LOAD32_BYTE( "c10.108", 0x080000, 0x20000, CRC(777c6a62) SHA1(4684d1c5d88b37ecb20002b7aa4814bf566e7d4b) )
+ ROM_LOAD32_BYTE( "c11.107", 0x080003, 0x20000, CRC(330ca5a1) SHA1(4409da231a5abcec8c7d2d66eefdfd2019a322db) )
+ ROM_LOAD32_BYTE( "c12.106", 0x080002, 0x20000, CRC(c1ec8e61) SHA1(09f2f4ddc100e5675c9bd82c200718fb0b69655e) )
+ ROM_LOAD32_BYTE( "c13.119", 0x180001, 0x20000, CRC(4e22a7e0) SHA1(69cc7dd528b8af0c28b448285768a3ed079099ba) )
+ ROM_LOAD32_BYTE( "c14.118", 0x180000, 0x20000, CRC(bdbd6232) SHA1(94b0741d5eced558723dda32a89aa2b747cdcbbd) )
+ ROM_LOAD32_BYTE( "c15.117", 0x180003, 0x20000, CRC(f163d768) SHA1(e54e31a6f956f7de52b59bcdd0cd4ac1662b5664) )
+ ROM_LOAD32_BYTE( "c16.116", 0x180002, 0x20000, CRC(5e5017c4) SHA1(586cd729630f00cbaf10d1036edebed1672bc532) )
ROM_REGION( 0x200000, "road_data", 0 )
ROM_LOAD16_BYTE( "road_chl" , 0x000000, 0x20000, CRC(862b109c) SHA1(9f81918362218ddc0a6bf0a5317c5150e514b699) )