1 // konamiic.cpp 2 //--------------------------------------------------------------------------------------------------------------- 3 extern UINT32 KonamiIC_K051960InUse; 4 extern UINT32 KonamiIC_K052109InUse; 5 extern UINT32 KonamiIC_K051316InUse; 6 extern UINT32 KonamiIC_K053245InUse; 7 extern UINT32 KonamiIC_K053247InUse; 8 extern UINT32 KonamiIC_K053936InUse; 9 extern UINT32 KonamiIC_K053250InUse; 10 extern UINT32 KonamiIC_K055555InUse; 11 extern UINT32 KonamiIC_K054338InUse; 12 extern UINT32 KonamiIC_K056832InUse; 13 extern UINT32 KonamiIC_GX_MixerInUse; 14 15 extern UINT8 *konami_priority_bitmap; 16 extern UINT32 *konami_bitmap32; 17 extern UINT32 *konami_palette32; 18 19 void KonamiClearBitmaps(UINT32 color); 20 void KonamiBlendCopy(UINT32 *palette); 21 22 void KonamiICReset(); 23 void KonamiICExit(); 24 void KonamiICScan(INT32 nAction); 25 26 void konami_sortlayers3( int *layer, int *pri ); 27 void konami_sortlayers4( int *layer, int *pri ); 28 void konami_sortlayers5( int *layer, int *pri ); 29 30 void KonamiRecalcPalette(UINT8 *src, UINT32 *dst, INT32 len); 31 32 void konami_rom_deinterleave_2(UINT8 *src, INT32 len); 33 void konami_rom_deinterleave_4(UINT8 *src, INT32 len); 34 35 // internal 36 void KonamiAllocateBitmaps(); 37 void konami_draw_16x16_tile(UINT8 *gfx, INT32 code, INT32 bpp, INT32 color, INT32 sx, INT32 sy, INT32 flipx, INT32 flipy); 38 void konami_draw_16x16_prio_sprite(UINT8 *gfx, INT32 code, INT32 bpp, INT32 color, INT32 sx, INT32 sy, INT32 flipx, INT32 flipy, UINT32 priority); 39 void konami_draw_16x16_zoom_tile(UINT8 *gfx, INT32 code, INT32 bpp, INT32 color, INT32 t, INT32 sx, INT32 sy, INT32 fx, INT32 fy, INT32 width, INT32 height, INT32 zoomx, INT32 zoomy); 40 void konami_draw_16x16_priozoom_sprite(UINT8 *gfx, INT32 code, INT32 bpp, INT32 color, INT32 t, INT32 sx, INT32 sy, INT32 fx, INT32 fy, INT32 width, INT32 height, INT32 zoomx, INT32 zoomy, UINT32 priority); 41 void konami_render_zoom_shadow_sprite(UINT8 *gfx, INT32 code, INT32 bpp, INT32 color, INT32 sx, INT32 sy, INT32 fx, INT32 fy, INT32 width, INT32 height, INT32 zoomx, INT32 zoomy, UINT32 priority, INT32 shadow); 42 43 // game-specific modes 44 void konami_set_highlight_mode(INT32 mode); 45 void konami_set_highlight_over_sprites_mode(INT32 mode); 46 void konami_set_layer_shadow_inhibit_mode(INT32 mode); 47 void konami_set_highlight_intensity(INT32 mode); 48 void konami_set_shadow_intensity(INT32 mode); 49 50 // k051960 / k052109 shared 51 //--------------------------------------------------------------------------------------------------------------- 52 void K052109_051960_w(INT32 offset, INT32 data); 53 UINT8 K052109_051960_r(INT32 offset); 54 55 // k051960.cpp 56 //--------------------------------------------------------------------------------------------------------------- 57 extern INT32 K051960ReadRoms; 58 extern INT32 K052109_irq_enabled; 59 void K051960SpritesRender(INT32 min_priority, INT32 max_priority); 60 UINT8 K0519060FetchRomData(UINT32 Offset); 61 UINT8 K051960Read(UINT32 Offset); 62 void K051960Write(UINT32 Offset, UINT8 Data); 63 void K051960SetCallback(void (*Callback)(INT32 *Code, INT32 *Colour, INT32 *Priority, INT32 *Shadow)); 64 void K051960SetSpriteOffset(INT32 x, INT32 y); 65 void K051960Reset(); 66 void K051960GfxDecode(UINT8 *src, UINT8 *dst, INT32 len); 67 void K051960Init(UINT8* pRomSrc, UINT8* pRomSrcExp, UINT32 RomMask); 68 void K051960Exit(); 69 void K051960Scan(INT32 nAction); 70 void K051960SetBpp(INT32 bpp); 71 72 void K051937Write(UINT32 Offset, UINT8 Data); 73 UINT8 K051937Read(UINT32 Offset); 74 75 // k052109.cpp 76 //--------------------------------------------------------------------------------------------------------------- 77 extern INT32 K052109RMRDLine; 78 extern INT32 K051960_irq_enabled; 79 extern INT32 K051960_nmi_enabled; 80 extern INT32 K051960_spriteflip; 81 82 void K052109UpdateScroll(); 83 void K052109AdjustScroll(INT32 x, INT32 y); 84 85 #define K052109_OPAQUE 0x10000 86 #define K052109_CATEGORY(x) (0x100|((x)&0xff)) 87 88 void K052109RenderLayer(INT32 nLayer, INT32 Flags, INT32 Priority); 89 UINT8 K052109Read(UINT32 Offset); 90 void K052109Write(UINT32 Offset, UINT8 Data); 91 void K052109SetCallback(void (*Callback)(INT32 Layer, INT32 Bank, INT32 *Code, INT32 *Colour, INT32 *xFlip, INT32 *priority)); 92 void K052109Reset(); 93 void K052109GfxDecode(UINT8 *src, UINT8 *dst, INT32 nLen); 94 void K052109Init(UINT8 *pRomSrc, UINT8* pRomSrcExp, UINT32 RomMask); 95 void K052109Exit(); 96 void K052109Scan(INT32 nAction); 97 98 #define K051960ByteRead(nStartAddress) \ 99 if (a >= nStartAddress && a <= nStartAddress + 0x3ff) { \ 100 return K051960Read(a - nStartAddress); \ 101 } 102 103 #define K051960ByteWrite(nStartAddress) \ 104 if (a >= nStartAddress && a <= nStartAddress + 0x3ff) { \ 105 K051960Write((a - nStartAddress), d); \ 106 return; \ 107 } 108 109 #define K051960WordWrite(nStartAddress) \ 110 if (a >= nStartAddress && a <= nStartAddress + 0x3ff) { \ 111 if (a & 1) { \ 112 K051960Write((a - nStartAddress) + 1, d & 0xff); \ 113 } else { \ 114 K051960Write((a - nStartAddress) + 0, (d >> 8) & 0xff); \ 115 } \ 116 return; \ 117 } 118 119 #define K051937ByteRead(nStartAddress) \ 120 if (a >= nStartAddress && a <= nStartAddress + 7) { \ 121 INT32 Offset = (a - nStartAddress); \ 122 \ 123 if (Offset == 0) { \ 124 static INT32 Counter; \ 125 return (Counter++) & 1; \ 126 } \ 127 \ 128 if (K051960ReadRoms && (Offset >= 0x04 && Offset <= 0x07)) { \ 129 return K0519060FetchRomData(Offset & 3); \ 130 } \ 131 \ 132 return 0; \ 133 } 134 135 #define K015937ByteWrite(nStartAddress) \ 136 if (a >= nStartAddress && a <= nStartAddress + 7) { \ 137 K051937Write((a - nStartAddress), d); \ 138 return; \ 139 } 140 141 #define K052109WordNoA12Read(nStartAddress) \ 142 if (a >= nStartAddress && a <= nStartAddress + 0x7fff) { \ 143 INT32 Offset = (a - nStartAddress) >> 1; \ 144 Offset = ((Offset & 0x3000) >> 1) | (Offset & 0x07ff); \ 145 \ 146 if (a & 1) { \ 147 return K052109Read(Offset + 0x2000); \ 148 } else { \ 149 return K052109Read(Offset + 0x0000); \ 150 } \ 151 } 152 153 154 #define K052109WordNoA12Write(nStartAddress) \ 155 if (a >= nStartAddress && a <= nStartAddress + 0x7fff) { \ 156 INT32 Offset = (a - nStartAddress) >> 1; \ 157 Offset = ((Offset & 0x3000) >> 1) | (Offset & 0x07ff); \ 158 \ 159 if (a & 1) { \ 160 K052109Write(Offset + 0x2000, d); \ 161 } else { \ 162 K052109Write(Offset + 0x0000, d); \ 163 } \ 164 return; \ 165 } 166 167 168 // K056832.cpp 169 //--------------------------------------------------------------------------------------------------------------- 170 #define K056832_LAYER_ALPHA 0x00100000 171 #define K056832_LAYER_OPAQUE 0x00400000 172 #define K056832_DRAW_FLAG_MIRROR 0x00800000 173 #define K056382_DRAW_FLAG_FORCE_XYSCROLL 0x00800000 // same as flag mirror 174 175 #define K056832_SET_ALPHA(x) (K056832_LAYER_ALPHA | ((x)<<8)) 176 177 void K056832Reset(); 178 void K056832Init(UINT8 *rom, UINT8 *romexp, INT32 rom_size, void (*cb)(INT32 layer, INT32 *code, INT32 *color, INT32 *flags)); 179 void K056832Exit(); 180 void K056832Scan(INT32 nAction); 181 void K056832SetLayerAssociation(INT32 status); 182 void K056832SetGlobalOffsets(INT32 minx, INT32 miny); 183 void K056832SetLayerOffsets(INT32 layer, INT32 xoffs, INT32 yoffs); 184 void K056832SetExtLinescroll(); 185 void K056832SetLinemap(); 186 UINT16 K056832GetVram(INT32 address); 187 INT32 K056832IsIrqEnabled(); 188 void K056832ReadAvac(INT32 *mode, INT32 *data); 189 UINT16 K056832ReadRegister(int reg); 190 INT32 K056832GetLookup(INT32 bits); 191 void K056832SetTileBank(int bank); 192 void K056832WordWrite(INT32 offset, UINT16 data); 193 void K056832ByteWrite(INT32 offset, UINT8 data); 194 UINT16 K056832RomWordRead(UINT16 offset); 195 void K056832HalfRamWriteWord(UINT32 offset, UINT16 data); 196 void K056832HalfRamWriteByte(UINT32 offset, UINT8 data); 197 UINT16 K056832HalfRamReadWord(UINT32 offset); 198 UINT8 K056832HalfRamReadByte(UINT32 offset); 199 void K056832RamWriteWord(UINT32 offset, UINT16 data); 200 void K056832RamWriteByte(UINT32 offset, UINT8 data); 201 UINT16 K056832RamReadWord(UINT32 offset); 202 UINT8 K056832RamReadByte(UINT32 offset); 203 UINT16 K056832RomWord8000Read(INT32 offset); 204 void K056832WritebRegsWord(INT32 offset, UINT16 data); 205 void K056832WritebRegsByte(INT32 offset, UINT8 data); 206 UINT16 K056832mwRomWordRead(INT32 address); 207 void K056832Draw(INT32 layer, UINT32 flags, UINT32 priority); 208 INT32 K056832GetLayerAssociation(); 209 void K056832Metamorphic_Fixup(); 210 211 // K051316.cpp 212 //--------------------------------------------------------------------------------------------------------------- 213 void K051316Init(INT32 chip, UINT8 *gfx, UINT8 *gfxexp, INT32 mask, void (*callback)(INT32 *code,INT32 *color,INT32 *flags), INT32 bpp, INT32 transp); 214 void K051316Reset(); 215 void K051316Exit(); 216 217 #define K051316_16BIT (1<<8) 218 #define K051316_OPAQUE (2<<8) 219 220 void K051316RedrawTiles(INT32 chip); 221 222 UINT8 K051316ReadRom(INT32 chip, INT32 offset); 223 UINT8 K051316Read(INT32 chip, INT32 offset); 224 void K051316Write(INT32 chip, INT32 offset, INT32 data); 225 226 void K051316WriteCtrl(INT32 chip, INT32 offset, INT32 data); 227 UINT8 K051316ReadCtrl(INT32 chip, INT32 offset); 228 void K051316WrapEnable(INT32 chip, INT32 status); 229 void K051316SetOffset(INT32 chip, INT32 xoffs, INT32 yoffs); 230 void K051316_zoom_draw(INT32 chip, INT32 flags); 231 void K051316Scan(INT32 nAction); 232 233 // K053245 / k053247 shared 234 //--------------------------------------------------------------------------------------------------------------- 235 extern INT32 K05324xZRejection; 236 void K05324xSetZRejection(INT32 z); 237 238 // K053245.cpp 239 //--------------------------------------------------------------------------------------------------------------- 240 INT32 K053245Reset(); 241 void K053245GfxDecode(UINT8 *src, UINT8 *dst, INT32 len); 242 void K053245Init(INT32 chip, UINT8 *gfx, UINT8 *gfxexp, INT32 mask, void (*callback)(INT32 *code,INT32 *color,INT32 *priority)); 243 void K053245Exit(); 244 void K053245SetBpp(INT32 chip, INT32 bpp); 245 246 void K053245SpritesRender(INT32 chip); 247 248 void K053245SetSpriteOffset(INT32 chip,INT32 offsx, INT32 offsy); 249 void K053245ClearBuffer(INT32 chip); 250 void K053245UpdateBuffer(INT32 chip); 251 void K053244BankSelect(INT32 chip, INT32 bank); 252 253 UINT16 K053245ReadWord(INT32 chip, INT32 offset); 254 void K053245WriteWord(INT32 chip, INT32 offset, INT32 data); 255 256 UINT8 K053245Read(INT32 chip, INT32 offset); 257 void K053245Write(INT32 chip, INT32 offset, INT32 data); 258 UINT8 K053244Read(INT32 chip, INT32 offset); 259 void K053244Write(INT32 chip, INT32 offset, INT32 data); 260 261 void K053245Scan(INT32 nAction); 262 263 extern UINT8 *K053245Ram[2]; 264 265 // K053251.cpp 266 //--------------------------------------------------------------------------------------------------------------- 267 void K053251Reset(); 268 269 void K053251Write(INT32 offset, INT32 data); 270 271 INT32 K053251GetPriority(INT32 idx); 272 INT32 K053251GetPaletteIndex(INT32 idx); 273 274 void K053251Write(INT32 offset, INT32 data); 275 276 void K053251Scan(INT32 nAction); 277 278 // K053247.cpp 279 //--------------------------------------------------------------------------------------------------------------- 280 void K053247Reset(); 281 void K053247Init(UINT8 *gfxrom, UINT8 *gfxromexp, INT32 gfxlen, void (*Callback)(INT32 *code, INT32 *color, INT32 *priority), INT32 flags); 282 void K053247Exit(); 283 void K053247Scan(INT32 nAction); 284 285 void K053247SetBpp(INT32 bpp); 286 287 extern UINT8 *K053247Ram; 288 extern void (*K053247Callback)(INT32 *code, INT32 *color, INT32 *priority); 289 290 void K053247Export(UINT8 **ram, UINT8 **gfx, void (**callback)(INT32 *, INT32 *, INT32 *), INT32 *dx, INT32 *dy); 291 void K053247GfxDecode(UINT8 *src, UINT8 *dst, INT32 len); // 16x16 292 void K053247SetSpriteOffset(INT32 offsx, INT32 offsy); 293 void K053247WrapEnable(INT32 status); 294 295 void K053246_set_OBJCHA_line(INT32 state); // 1 assert, 0 clear 296 INT32 K053246_is_IRQ_enabled(); 297 298 UINT8 K053247Read(INT32 offset); 299 void K053247Write(INT32 offset, INT32 data); 300 UINT8 K053246Read(INT32 offset); 301 void K053246Write(INT32 offset, INT32 data); 302 303 void K053247WriteRegsByte(INT32 offset, UINT8 data); 304 void K053247WriteRegsWord(INT32 offset, UINT16 data); 305 UINT16 K053247ReadRegs(INT32 offset); 306 UINT16 K053246ReadRegs(INT32 offset); 307 308 void K053247SpritesRender(); 309 310 UINT16 K053247ReadWord(INT32 offset); 311 void K053247WriteWord(INT32 offset, UINT16 data); 312 313 // k054000.cpp 314 //------------------------------------------------------------------------------------------ 315 void K054000Reset(); 316 void K054000Write(INT32 offset, INT32 data); 317 UINT8 K054000Read(INT32 address); 318 void K054000Scan(INT32 nAction); 319 320 // K051733.cpp 321 //------------------------------------------------------------------------------------------ 322 void K051733Reset(); 323 void K051733Write(INT32 offset, INT32 data); 324 UINT8 K051733Read(INT32 offset); 325 void K051733Scan(INT32 nAction); 326 327 // K053936.cpp 328 //------------------------------------------------------------------------------------------ 329 330 void K053936Init(INT32 chip, UINT8 *ram, INT32 len, INT32 w, INT32 h, void (*pCallback)(INT32 offset, UINT16 *ram, INT32 *code, INT32 *color, INT32 *sx, INT32 *sy, INT32 *fx, INT32 *fy)); 331 332 void K053936Reset(); 333 void K053936Exit(); 334 void K053936Scan(INT32 nAction); 335 336 void K053936EnableWrap(INT32 chip, INT32 status); 337 void K053936SetOffset(INT32 chip, INT32 xoffs, INT32 yoffs); 338 void K053936PredrawTiles3(INT32 chip, UINT8 *gfx, INT32 tile_size_x, INT32 tile_size_y, INT32 transparent); 339 void K053936PredrawTiles2(INT32 chip, UINT8 *gfx); 340 void K053936PredrawTiles(INT32 chip, UINT8 *gfx, INT32 transparent, INT32 tcol /*transparent color*/); 341 void K053936Draw(INT32 chip, UINT16 *ctrl, UINT16 *linectrl, INT32 transp); 342 343 extern UINT16 *m_k053936_0_ctrl_16; 344 extern UINT16 *m_k053936_0_linectrl_16; 345 extern UINT16 *m_k053936_0_ctrl; 346 extern UINT16 *m_k053936_0_linectrl; 347 extern UINT16 *K053936_external_bitmap; 348 349 void K053936GP_set_colorbase(INT32 chip, INT32 color_base); 350 void K053936GP_enable(int chip, int enable); 351 void K053936GP_set_offset(int chip, int xoffs, int yoffs); 352 void K053936GP_clip_enable(int chip, int status); 353 void K053936GP_set_cliprect(int chip, int minx, int maxx, int miny, int maxy); 354 void K053936GP_0_zoom_draw(UINT16 *bitmap, int tilebpp, int blend, int alpha, int pixeldouble_output, UINT16* temp_m_k053936_0_ctrl_16, UINT16* temp_m_k053936_0_linectrl_16,UINT16* temp_m_k053936_0_ctrl, UINT16* temp_m_k053936_0_linectrl); 355 void K053936GpInit(); 356 void K053936GPExit(); 357 358 // k053250.cpp 359 //------------------------------------------------------------------------------------------ 360 361 extern UINT16 *K053250Ram; // allocated in k053250Init 362 363 void K053250Init(INT32 chip, UINT8 *rom, UINT8 *romexp, INT32 size); 364 void K053250SetOffsets(INT32 chip, int offx, int offy); 365 void K053250Reset(); 366 void K053250Scan(INT32 nAction); 367 void K053250Exit(); 368 369 void K053250Draw(INT32 chip, int colorbase, int flags, int priority); 370 371 UINT16 K053250RegRead(INT32 chip, INT32 offset); 372 void K053250RegWrite(INT32 chip, INT32 offset, UINT8 data); 373 UINT16 K053250RomRead(INT32 chip, INT32 offset); 374 375 376 // k054338.cpp 377 //------------------------------------------------------------------------------------------ 378 379 #define K338_REG_BGC_R 0 380 #define K338_REG_BGC_GB 1 381 #define K338_REG_SHAD1R 2 382 #define K338_REG_BRI3 11 383 #define K338_REG_PBLEND 13 384 #define K338_REG_CONTROL 15 385 386 #define K338_CTL_KILL 0x01 /* 0 = no video output, 1 = enable */ 387 #define K338_CTL_MIXPRI 0x02 388 #define K338_CTL_SHDPRI 0x04 389 #define K338_CTL_BRTPRI 0x08 390 #define K338_CTL_WAILSL 0x10 391 #define K338_CTL_CLIPSL 0x20 392 393 void K054338Init(); 394 void K054338Reset(); 395 void K054338Exit(); 396 void K054338Scan(INT32 nAction); 397 void K054338WriteWord(INT32 offset, UINT16 data); 398 void K054338WriteByte(INT32 offset, UINT8 data); 399 INT32 K054338_read_register(int reg); 400 void K054338_fill_solid_bg(); 401 void K054338_fill_backcolor(int palette_offset, int mode); 402 INT32 K054338_set_alpha_level(int pblend); 403 INT32 K054338_alpha_level_moo(INT32 pblend); 404 void K054338_invert_alpha(int invert); 405 void K054338_update_all_shadows(INT32 rushingheroes_hack); 406 void K054338_export_config(int **shdRGB); 407 408 extern INT32 m_shd_rgb[12]; 409 410 // k055555.cpp 411 //------------------------------------------------------------------------------------------ 412 413 #define K55_PALBASE_BG 0 // background palette 414 #define K55_CONTROL 1 // control register 415 #define K55_COLSEL_0 2 // layer A, B color depth 416 #define K55_COLSEL_1 3 // layer C, D color depth 417 #define K55_COLSEL_2 4 // object, S1 color depth 418 #define K55_COLSEL_3 5 // S2, S3 color depth 419 420 #define K55_PRIINP_0 7 // layer A pri 0 421 #define K55_PRIINP_1 8 // layer A pri 1 422 #define K55_PRIINP_2 9 // layer A "COLPRI" 423 #define K55_PRIINP_3 10 // layer B pri 0 424 #define K55_PRIINP_4 11 // layer B pri 1 425 #define K55_PRIINP_5 12 // layer B "COLPRI" 426 #define K55_PRIINP_6 13 // layer C pri 427 #define K55_PRIINP_7 14 // layer D pri 428 #define K55_PRIINP_8 15 // OBJ pri 429 #define K55_PRIINP_9 16 // sub 1 (GP:PSAC) pri 430 #define K55_PRIINP_10 17 // sub 2 (GX:PSAC) pri 431 #define K55_PRIINP_11 18 // sub 3 pri 432 433 #define K55_OINPRI_ON 19 // object priority bits selector 434 435 #define K55_PALBASE_A 23 // layer A palette 436 #define K55_PALBASE_B 24 // layer B palette 437 #define K55_PALBASE_C 25 // layer C palette 438 #define K55_PALBASE_D 26 // layer D palette 439 #define K55_PALBASE_OBJ 27 // OBJ palette 440 #define K55_PALBASE_SUB1 28 // SUB1 palette 441 #define K55_PALBASE_SUB2 29 // SUB2 palette 442 #define K55_PALBASE_SUB3 30 // SUB3 palette 443 444 #define K55_BLEND_ENABLES 33 // blend enables for tilemaps 445 #define K55_VINMIX_ON 34 // additional blend enables for tilemaps 446 #define K55_OSBLEND_ENABLES 35 // obj/sub blend enables 447 #define K55_OSBLEND_ON 36 // not sure, related to obj/sub blend 448 449 #define K55_SHAD1_PRI 37 // shadow/highlight 1 priority 450 #define K55_SHAD2_PRI 38 // shadow/highlight 2 priority 451 #define K55_SHAD3_PRI 39 // shadow/highlight 3 priority 452 #define K55_SHD_ON 40 // shadow/highlight 453 #define K55_SHD_PRI_SEL 41 // shadow/highlight 454 455 #define K55_VBRI 42 // VRAM layer brightness enable 456 #define K55_OSBRI 43 // obj/sub brightness enable, part 1 457 #define K55_OSBRI_ON 44 // obj/sub brightness enable, part 2 458 #define K55_INPUT_ENABLES 45 // input enables 459 460 /* bit masks for the control register */ 461 #define K55_CTL_GRADDIR 0x01 // 0=vertical, 1=horizontal 462 #define K55_CTL_GRADENABLE 0x02 // 0=BG is base color only, 1=gradient 463 #define K55_CTL_FLIPPRI 0x04 // 0=standard Konami priority, 1=reverse 464 #define K55_CTL_SDSEL 0x08 // 0=normal shadow timing, 1=(not used by GX) 465 466 /* bit masks for the input enables */ 467 #define K55_INP_VRAM_A 0x01 468 #define K55_INP_VRAM_B 0x02 469 #define K55_INP_VRAM_C 0x04 470 #define K55_INP_VRAM_D 0x08 471 #define K55_INP_OBJ 0x10 472 #define K55_INP_SUB1 0x20 473 #define K55_INP_SUB2 0x40 474 #define K55_INP_SUB3 0x80 475 476 #define K055555_COLORMASK 0x0000ffff 477 #define K055555_MIXSHIFT 16 478 #define K055555_BRTSHIFT 18 479 #define K055555_SKIPSHADOW 0x40000000 480 #define K055555_FULLSHADOW 0x80000000 481 482 extern INT32 K055555_enabled; 483 void K055555WriteReg(UINT8 regnum, UINT8 regdat); 484 void K055555LongWrite(INT32 offset, UINT32 data); // not implimented 485 void K055555WordWrite(INT32 offset, UINT16 data); 486 void K055555ByteWrite(INT32 offset, UINT8 data); 487 INT32 K055555ReadRegister(INT32 regnum); 488 INT32 K055555GetPaletteIndex(INT32 idx); 489 void K055555Reset(); 490 void K055555Init(); 491 void K055555Exit(); 492 void K055555Scan(INT32 nAction); 493 494 495 // konamigx.cpp 496 #define GXMIX_BLEND_AUTO 0 // emulate all blend effects 497 #define GXMIX_BLEND_NONE 1 // disable all blend effects 498 #define GXMIX_BLEND_FAST 2 // simulate translucency 499 #define GXMIX_BLEND_FORCE 3 // force mix code on selected layer(s) 500 #define GXMIX_NOLINESCROLL 0x1000 // disable linescroll on selected layer(s) 501 #define GXMIX_NOSHADOW 0x10000000 // disable all shadows (shadow pens will be skipped) 502 #define GXMIX_NOZBUF 0x20000000 // disable z-buffering (shadow pens will be drawn as solid) 503 504 // Sub Layer Flags 505 #define GXSUB_K053250 0x10 // chip type: 0=K053936 ROZ+, 1=K053250 LVC 506 #define GXSUB_4BPP 0x04 // 16 colors 507 #define GXSUB_5BPP 0x05 // 32 colors 508 #define GXSUB_8BPP 0x08 // 256 colors 509 510 void konamigx_mixer_init(int objdma); 511 void konamigx_mixer_exit(); 512 void konamigx_scan(INT32 nAction); 513 void konamigx_mixer_primode(int mode); 514 void konamigx_mixer(int sub1 /*extra tilemap 1*/, int sub1flags, int sub2 /*extra tilemap 2*/, int sub2flags, int mixerflags, int extra_bitmap /*extra tilemap 3*/, int rushingheroes_hack); 515 extern INT32 konamigx_mystwarr_kludge; 516