static void DrawPuchiCarat(void) { int x16,y16; int x,y,ta,zz,zzz,zzzz; UINT8 *MAP; ClearPaletteMap(); // Init tc0003vcu emulation // ------------------------ tc0003vcu_layer_count = 0; if(check_layer_enabled(f3_bg0_id)){ MAKE_SCROLL_1024x512_4_16( (ReadWord68k(&RAM_SCR0[0])-SCR0_XOFS)>>6, (ReadWord68k(&RAM_SCR0[8])-SCR0_YOFS)>>7 ); zz=zzzz; for(y=(64-y16);y<(232+64);y+=16){ for(x=(64-x16);x<(320+64);x+=16){ MAP_PALETTE_MAPPED_NEW( ReadWord68k(&RAM_BG0[zz])&0x1FF, 64, MAP ); switch(RAM_BG0[zz]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[(ReadWord68k(&RAM_BG0[zz+2])&0x3FFF)<<8],x,y,MAP); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[(ReadWord68k(&RAM_BG0[zz+2])&0x3FFF)<<8],x,y,MAP); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[(ReadWord68k(&RAM_BG0[zz+2])&0x3FFF)<<8],x,y,MAP); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[(ReadWord68k(&RAM_BG0[zz+2])&0x3FFF)<<8],x,y,MAP); break; } zz=(zz&0x1F00)|((zz+4)&0xFF); } zzzz=(zzzz+0x100)&0x1FFF; zz=zzzz; } } if(check_layer_enabled(f3_bg1_id)){ MAKE_SCROLL_1024x512_4_16( (ReadWord68k(&RAM_SCR1[0])-SCR1_XOFS)>>6, (ReadWord68k(&RAM_SCR1[8])-SCR1_YOFS)>>7 ); zz=zzzz; for(y=(64-y16);y<(232+64);y+=16){ for(x=(64-x16);x<(320+64);x+=16){ ta=ReadWord68k(&RAM_BG1[zz+2])&0x3FFF; if(ta!=0){ MAP_PALETTE_MAPPED_NEW( ReadWord68k(&RAM_BG1[zz])&0x1FF, 64, MAP ); if(GFX_BG0_SOLID[ta]==0){ switch(RAM_BG1[zz]&0xC0){ case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; } } else{ switch(RAM_BG1[zz]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; } } } zz=(zz&0x1F00)|((zz+4)&0xFF); } zzzz=(zzzz+0x100)&0x1FFF; zz=zzzz; } } if(check_layer_enabled(f3_bg2_id)){ MAKE_SCROLL_1024x512_4_16( (ReadWord68k(&RAM_SCR2[0])-SCR2_XOFS)>>6, (ReadWord68k(&RAM_SCR2[8])-SCR2_YOFS)>>7 ); zz=zzzz; for(y=(64-y16);y<(232+64);y+=16){ for(x=(64-x16);x<(320+64);x+=16){ ta=ReadWord68k(&RAM_BG2[zz+2])&0x3FFF; if(ta!=0){ MAP_PALETTE_MAPPED_NEW( ReadWord68k(&RAM_BG2[zz])&0x1FF, 64, MAP ); if(GFX_BG0_SOLID[ta]==0){ switch(RAM_BG2[zz]&0xC0){ case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; } } else{ switch(RAM_BG2[zz]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,MAP); break; } } } zz=(zz&0x1F00)|((zz+4)&0xFF); } zzzz=(zzzz+0x100)&0x1FFF; zz=zzzz; } } render_tc0200obj_mapped_f3system_b(); if(check_layer_enabled(f3_bg5_id)){ f3video_render_fg0(); } }
static void DrawPuzzleBobble2(void) { int x16,y16,zz,zzz,zzzz; int ta,x,y,z; UINT8 *map; ClearPaletteMap(); // Init tc0003vcu emulation // ------------------------ tc0003vcu_layer_count = 0; if(check_layer_enabled(f3_bg0_id)){ MAKE_SCROLL_512x512_4_16( (ReadWord68k(&RAM_SCR0[0])-SCR0_XOFS)>>6, (ReadWord68k(&RAM_SCR0[8])-SCR0_YOFS)>>7 ); START_SCROLL_512x512_4_16(64,64,320,232); ta=ReadWord68k(&RAM_BG0[zz+2])&0x3FFF; MAP_PALETTE_MULTI_MAPPED_NEW( ReadWord68k(&RAM_BG0[zz])&0x1FF, GFX_BG0_PENS[ta], map ); switch(RAM_BG0[zz]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,map); break; } END_SCROLL_512x512_4_16(); } if(check_layer_enabled(f3_bg1_id)){ MAKE_SCROLL_512x512_4_16( (ReadWord68k(&RAM_SCR1[0])-SCR1_XOFS)>>6, (ReadWord68k(&RAM_SCR1[8])-SCR1_YOFS)>>7 ); START_SCROLL_512x512_4_16(64,64,320,232); ta=ReadWord68k(&RAM_BG1[zz+2])&0x3FFF; if(GFX_BG0_SOLID[ta]!=0){ // No pixels; skip MAP_PALETTE_MULTI_MAPPED_NEW( ReadWord68k(&RAM_BG1[zz])&0x1FF, GFX_BG0_PENS[ta], map ); if(GFX_BG0_SOLID[ta]==1){ // Some pixels; trans switch(RAM_BG1[zz]&0xC0){ case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,map); break; } } else{ // all pixels; solid switch(RAM_BG1[zz]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,map); break; } } } END_SCROLL_512x512_4_16(); } if(check_layer_enabled(f3_bg2_id)){ MAKE_SCROLL_512x512_4_16( (ReadWord68k(&RAM_SCR2[0])-SCR2_XOFS)>>6, (ReadWord68k(&RAM_SCR2[8])-SCR2_YOFS)>>7 ); START_SCROLL_512x512_4_16(64,64,320,232); ta=ReadWord68k(&RAM_BG2[zz+2])&0x3FFF; if(GFX_BG0_SOLID[ta]!=0){ // No pixels; skip MAP_PALETTE_MULTI_MAPPED_NEW( ReadWord68k(&RAM_BG2[zz])&0x1FF, GFX_BG0_PENS[ta], map ); if(GFX_BG0_SOLID[ta]==1){ // Some pixels; trans switch(RAM_BG2[zz]&0xC0){ case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,map); break; } } else{ // all pixels; solid switch(RAM_BG2[zz]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,map); break; } } } END_SCROLL_512x512_4_16(); } if(check_layer_enabled(f3_bg3_id)){ MAKE_SCROLL_512x512_4_16( (ReadWord68k(&RAM_SCR3[0])-SCR3_XOFS)>>6, (ReadWord68k(&RAM_SCR3[8])-SCR3_YOFS)>>7 ); START_SCROLL_512x512_4_16(64,64,320,232); ta=ReadWord68k(&RAM_BG3[zz+2])&0x3FFF; if(GFX_BG0_SOLID[ta]!=0){ // No pixels; skip MAP_PALETTE_MULTI_MAPPED_NEW( ReadWord68k(&RAM_BG3[zz])&0x1FF, GFX_BG0_PENS[ta], map ); if(GFX_BG0_SOLID[ta]==1){ // Some pixels; trans switch(RAM_BG3[zz]&0xC0){ case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x40: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x80: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,map); break; } } else{ // all pixels; solid switch(RAM_BG3[zz]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],x,y,map); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],x,y,map); break; } } } END_SCROLL_512x512_4_16(); } // object render_tc0200obj_mapped_f3system_b(); if(check_layer_enabled(f3_bg5_id)){ zz=0; for(y=64;y<232+64;y+=8){ for(x=64;x<320+64;x+=8){ z=RAM[0x3C001+zz]; if((z!=0)&&(z!=0x10)){ // 0x10='brown' rectangle MAP_PALETTE_MULTI_MAPPED_NEW( (RAM[0x3C000+zz]>>1)&0x3F, 16, map ); if((RAM[0x3C000+zz]&0x01)!=0){ Draw8x8_Trans_Packed_Mapped_Rot(&RAM[0x3E000+(z<<5)],x,y,map); } else{ Draw8x8_Trans_Packed_Mapped_FlipY_Rot(&RAM[0x3E000+(z<<5)],x,y,map); } } zz+=2; } zz+=(128-80); } }
static void DrawGekirindan(void) { UINT8 *MAP; int x16,y16; int x,y,zz,zzz,zzzz; int ta; ClearPaletteMap(); // Init tc0003vcu emulation // ------------------------ tc0003vcu_layer_count = 0; if(check_layer_enabled(f3_bg0_id)) { MAKE_SCROLL_512x512_4_16( (ReadWord68k(&RAM_SCR0[0])-SCR0_XOFS)>>6, (ReadWord68k(&RAM_SCR0[8])-SCR0_YOFS)>>7 ); START_SCROLL_512x512_4_16(64,64,320,232); MAP_PALETTE_MAPPED_NEW( ReadWord68k(&RAM_BG0[zz])&0x1FF, 32, MAP ); ta=ReadWord68k(&RAM_BG0[zz+2])&0x7FFF; switch(RAM_BG0[zz]&0xC0) { case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x40: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x80: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; } END_SCROLL_512x512_4_16(); } if(check_layer_enabled(f3_bg1_id)) { MAKE_SCROLL_512x512_4_16( (ReadWord68k(&RAM_SCR1[0])-SCR1_XOFS)>>6, (ReadWord68k(&RAM_SCR1[8])-SCR1_YOFS)>>7 ); START_SCROLL_512x512_4_16(64,64,320,232); ta=ReadWord68k(&RAM_BG1[zz+2])&0x7FFF; if(ta!=0) { MAP_PALETTE_MAPPED_NEW( ReadWord68k(&RAM_BG1[zz])&0x1FF, 32, MAP ); if(GFX_BG0_SOLID[ta]==0) { switch(RAM_BG1[zz]&0xC0) { case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x40: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x80: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; } } else { switch(RAM_BG1[zz]&0xC0) { case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x40: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x80: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; } } } END_SCROLL_512x512_4_16(); } if(check_layer_enabled(f3_bg2_id)) { MAKE_SCROLL_512x512_4_16( (ReadWord68k(&RAM_SCR2[0])-SCR2_XOFS)>>6, (ReadWord68k(&RAM_SCR2[8])-SCR2_YOFS)>>7 ); START_SCROLL_512x512_4_16(64,64,320,232); ta=ReadWord68k(&RAM_BG2[zz+2])&0x7FFF; if(ta!=0) { MAP_PALETTE_MAPPED_NEW( ReadWord68k(&RAM_BG2[zz])&0x1FF, 32, MAP ); if(GFX_BG0_SOLID[ta]==0) { switch(RAM_BG2[zz]&0xC0) { case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x40: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x80: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; } } else { switch(RAM_BG2[zz]&0xC0) { case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x40: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x80: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; } } } END_SCROLL_512x512_4_16(); } if(check_layer_enabled(f3_bg3_id)) { MAKE_SCROLL_512x512_4_16( (ReadWord68k(&RAM_SCR3[0])-SCR3_XOFS)>>6, (ReadWord68k(&RAM_SCR3[8])-SCR3_YOFS)>>7 ); START_SCROLL_512x512_4_16(64,64,320,232); ta=ReadWord68k(&RAM_BG3[zz+2])&0x7FFF; if(ta!=0) { MAP_PALETTE_MAPPED_NEW( ReadWord68k(&RAM_BG3[zz])&0x1FF, 32, MAP ); if(GFX_BG0_SOLID[ta]==0) { switch(RAM_BG3[zz]&0xC0) { case 0x00: Draw16x16_Trans_Mapped_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x40: Draw16x16_Trans_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x80: Draw16x16_Trans_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0xC0: Draw16x16_Trans_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; } } else { switch(RAM_BG3[zz]&0xC0) { case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x40: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0x80: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[ta<<8],y,(320+128-16)-x,MAP); break; } } } END_SCROLL_512x512_4_16(); } render_tc0200obj_mapped_f3system_r270_b(); if(check_layer_enabled(f3_bg5_id)) { f3video_render_fg0_r270(); } }