trunk/src/mame/drivers/gunpey.c
| r21526 | r21527 | |
| 239 | 239 | int color; |
| 240 | 240 | UINT8 *vram = memregion("vram")->base(); |
| 241 | 241 | |
| 242 | // there doesn't seem to be a specific bit to mark compressed sprites (we currently have a hack to look at the first byte of the data) |
| 243 | // do they get decompressed at blit time instead? of are there other registers we need to look at |
| 244 | |
| 242 | 245 | // +0 +1 +2 +3 +4 +5 +6 +7 |
| 243 | | // cccc cccc e--b b--- | xxxx ---- u--- ---- | yyyy yy-- --XX XXXX | nnnn nnnn ---Y YYYY | mmmm mmmm -MMM -NNN | hhhh hhhh wwww wwww | ---- ---- oooo oooo | pppp pppp ---- ---- | |
| 246 | // cccc cccc e--b b--- | xxxx x--- u--t tttt | yyyy yy-- --XX XXXX | nnnn nnnn ---Y YYYY | mmmm mmmm -MMM -NNN | hhhh hhhh wwww wwww | ---- ---- oooo oooo | pppp pppp ---- ---- | |
| 244 | 247 | |
| 245 | 248 | // c = color palette |
| 246 | 249 | // e = END marker |
| r21526 | r21527 | |
| 258 | 261 | // u = unknown, set on text, maybe 'solid' ? |
| 259 | 262 | // o = zoom width |
| 260 | 263 | // p = zoom height |
| 264 | // t = transparency / alpha related? (0x10 on player cursor, 0xf when swapping, other values at other times..) |
| 261 | 265 | const int debug = 0; |
| 262 | 266 | |
| 263 | 267 | if(!(m_wram[count+0] & 1)) |
| r21526 | r21527 | |
| 277 | 281 | |
| 278 | 282 | //UINT32 col = 0xffffff; |
| 279 | 283 | // UINT32 val = (m_wram[count+1] << 16) | ((m_wram[count+2])); |
| 280 | | int xsource = ((m_wram[count+2] & 0x003f) << 4) | ((m_wram[count+1] & 0xf000) >> 12); |
| 284 | int xsource = ((m_wram[count+2] & 0x003f) << 5) | ((m_wram[count+1] & 0xf800) >> 11); |
| 281 | 285 | int ysource = ((m_wram[count+3] & 0x001f) << 6) | ((m_wram[count+2] & 0xfc00) >> 10); |
| 282 | 286 | //printf("%08x %04x %04x\n", val, m_wram[count+1],m_wram[count+2] ); |
| 283 | 287 | // UINT16 xsource = (m_wram[count+2] & 0x00ff << 4) | (m_wram[count+1] & 0xf000 >> 12); |
| 284 | 288 | //xsource<<=1; |
| 285 | 289 | |
| 286 | | xsource<<=1; |
| 290 | // xsource<<=1; |
| 287 | 291 | // ysource <<=2; |
| 288 | 292 | |
| 289 | 293 | UINT8 testhack = vram[((((ysource+0)&0x7ff)*0x800) + ((xsource+0)&0x7ff))]; |
| r21526 | r21527 | |
| 299 | 303 | if (debug) printf("sprite %04x %04x %04x %04x %04x %04x %04x %04x\n", m_wram[count+0], m_wram[count+1], m_wram[count+2], m_wram[count+3], m_wram[count+4], m_wram[count+5], m_wram[count+6], m_wram[count+7]); |
| 300 | 304 | |
| 301 | 305 | unused = m_wram[count+0]&~0xff98; if (unused) printf("unused bits set in word 0 - %04x\n", unused); |
| 302 | | unused = m_wram[count+1]&~0xf080; if (unused) printf("unused bits set in word 1 - %04x\n", unused); |
| 306 | unused = m_wram[count+1]&~0xf89f; if (unused) printf("unused bits set in word 1 - %04x\n", unused); |
| 303 | 307 | unused = m_wram[count+2]&~0xfc3f; if (unused) printf("unused bits set in word 2 - %04x\n", unused); |
| 304 | 308 | unused = m_wram[count+3]&~0xff1f; if (unused) printf("unused bits set in word 3 - %04x\n", unused); |
| 305 | 309 | unused = m_wram[count+4]&~0xff77; if (unused) printf("unused bits set in word 4 - %04x\n", unused); |