📄 pbobble4.c
字号:
void ClearPuzzleBobble4(void){ save_eeprom();#ifdef RAINE_DEBUG save_debug("ROM.bin",ROM,0x200000,0); save_debug("RAM.bin",RAM,0x080000,0); //save_debug("GFX.bin",GFX,0x64AB00+0x3C2300,0);#endif}void ExecutePuzzleBobble4Frame(void){ int ta; /* print_ingame(240,"0X:%04x 1X:%04x 2X:%04x 3X:%04x",ReadWord68k(&RAM[0x6A000]),ReadWord68k(&RAM[0x6A002]),ReadWord68k(&RAM[0x6A004]),ReadWord68k(&RAM[0x6A006])); print_ingame(240,"0Y:%04x 1Y:%04x 2Y:%04x 3Y:%04x",ReadWord68k(&RAM[0x6A008]),ReadWord68k(&RAM[0x6A00A]),ReadWord68k(&RAM[0x6A00C]),ReadWord68k(&RAM[0x6A00E])); print_ingame(240,"00:%04x 00:%04x PX:%04x PY:%04x",ReadWord68k(&RAM[0x6A010]),ReadWord68k(&RAM[0x6A012]),ReadWord68k(&RAM[0x6A014]),ReadWord68k(&RAM[0x6A016])); print_ingame(240,"00:%04x 00:%04x 00:%04x ??:%04x",ReadWord68k(&RAM[0x6A018]),ReadWord68k(&RAM[0x6A01A]),ReadWord68k(&RAM[0x6A01C]),ReadWord68k(&RAM[0x6A01E])); print_ingame(240,"-------------------------------"); print_ingame(240,"%04x %04x %04x %04x",ReadWord68k(&RAM[0x687F8]),ReadWord68k(&RAM[0x687FA]),ReadWord68k(&RAM[0x687FC]),ReadWord68k(&RAM[0x687FE])); print_ingame(240,"%04x %04x %04x %04x",ReadWord68k(&RAM[0x40000]),ReadWord68k(&RAM[0x40200]),ReadWord68k(&RAM[0x40400]),ReadWord68k(&RAM[0x40600])); print_ingame(240,"%04x %04x %04x %04x",ReadWord68k(&RAM[0x40800]),ReadWord68k(&RAM[0x40A00]),ReadWord68k(&RAM[0x40C00]),ReadWord68k(&RAM[0x40E00])); print_ingame(240,"%04x",ReadWord68k(&RAM[0x41000]));*/ for (ta=0; ta<f3_slices; ta++) { Execute68020(800000/f3_slices); if (RaineSoundCard) { cpu_execute_cycles(CPU_68K_0, CPU_FRAME_MHz(16,60*f3_slices)); // M68000 16MHz (60fps) if (int7_active) f3_timer_callback(); } } /*#ifdef RAINE_DEBUG print_debug("PC:%06x SR:%04x A7:%06x\n",regs.pc,regs.sr,m68k_areg(regs,7)); #endif*/ Interrupt68020(2); Interrupt68020(5); Interrupt68020(3); IntF3System();}static int BGPRI[3];void DrawPuzzleBobble4(void){ UINT8 *MAP; int x,y,z,ta,zz,zzz,zzzz,x16,y16; UINT16 d0; ClearPaletteMap(); // Init tc0003vcu emulation // ------------------------ tc0003vcu_layer_count = 0; d0=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); if(d0==0) d0=ReadWord68k(&RAM_BG0[zz])&0x3E00; 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; } END_SCROLL_512x512_4_16(); } BGPRI[0]=d0; d0=0; 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(ta!=0){ if(d0==0) d0=ReadWord68k(&RAM_BG1[zz])&0x3E00; 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; } } } END_SCROLL_512x512_4_16(); } BGPRI[1]=d0; d0=0; 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(ta!=0){ if(d0==0) d0=ReadWord68k(&RAM_BG2[zz])&0x3E00; 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; } } } END_SCROLL_512x512_4_16(); } BGPRI[2]=d0; d0=0; 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(ta!=0){ if(d0==0) d0=ReadWord68k(&RAM_BG3[zz])&0x3E00; MAP_PALETTE_MAPPED_NEW( ReadWord68k(&RAM_BG3[zz])&0x1FF, 64, MAP ); if(GFX_BG0_SOLID[ta]==0){ 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{ 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(); } BGPRI[3]=d0; render_tc0200obj_mapped_f3system_b(); if(check_layer_enabled(f3_bg5_id)){ //memset(RAM+0x3E000+(5<<5),0x20,0x00); //f3video_render_fg0(); 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!=5)){ // 5='black' transparent shade MAP_PALETTE_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); } }// print_ingame(1,"$$$: %04x %04x %04x %04x",BGPRI[0],BGPRI[1],BGPRI[2],BGPRI[3]); if((BGPRI[0]!=0)||(BGPRI[1]!=0)||(BGPRI[2]!=0)||(BGPRI[3]!=0)) { RAM_BG0=RAM+0x33000; RAM_BG2=RAM+0x31000; RAM_BG3=RAM+0x30000; RAM_SCR0=RAM+0x6A006; RAM_SCR2=RAM+0x6A002; RAM_SCR3=RAM+0x6A000; SCR3_XOFS=0xF640; SCR2_XOFS=0xF740; SCR0_XOFS=0xF940; } else { RAM_BG0=RAM+0x30000; RAM_BG3=RAM+0x31000; RAM_BG2=RAM+0x33000; RAM_SCR0=RAM+0x6A000; RAM_SCR3=RAM+0x6A002; RAM_SCR2=RAM+0x6A006; SCR0_XOFS=0xF640; SCR3_XOFS=0xF740; SCR2_XOFS=0xF940; }}/*'Raven' Romlist---------------File | Contents-------+----------------------------------pb4.17 | 68020 3pb4.18 | 68020 2pb4.19 | 68020 1pb4.20 | 68020 0pb4.32 | 68000 1pb4.33 | 68000 0pb4.45 | Tiles oddpb4.47 | Tiles evenpb4.38 | Samples 0 (missing odd bytes)pb4.39 | Samples 1 (missing odd bytes)pb4.40 | Samples 2 (missing odd bytes)pb4.8 | Sprites odd (missing odd bytes)pb4.12 | Sprites even (missing odd bytes)What's missing:- Odd bytes on 5 of the roms- 1 Mask rom for tiles*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -