📄 undrfire.c
字号:
GFX_BG0[tb++]=TMP[ta+1]&15; GFX_BG0[tb++]=TMP[ta+1]>>4; tb+=4; } tb=0; if(!load_rom("d67-10.rom", TMP, 0x100000)) return; // 8x8 TILES ($10000) for(ta=0;ta<0x100000;ta+=4,tb+=16){ GFX_BG1[tb+0]=TMP[ta+0]&15; GFX_BG1[tb+8]=TMP[ta+0]>>4; GFX_BG1[tb+1]=TMP[ta+1]&15; GFX_BG1[tb+9]=TMP[ta+1]>>4; GFX_BG1[tb+2]=TMP[ta+2]&15; GFX_BG1[tb+10]=TMP[ta+2]>>4; GFX_BG1[tb+3] =TMP[ta+3]&15; GFX_BG1[tb+11]=TMP[ta+3]>>4; } tb=4; if(!load_rom("d67-11.rom", TMP, 0x100000)) return; // 8x8 TILES for(ta=0;ta<0x100000;ta+=4,tb+=16){ GFX_BG1[tb+0]=TMP[ta+0]&15; GFX_BG1[tb+8]=TMP[ta+0]>>4; GFX_BG1[tb+1]=TMP[ta+1]&15; GFX_BG1[tb+9]=TMP[ta+1]>>4; GFX_BG1[tb+2]=TMP[ta+2]&15; GFX_BG1[tb+10]=TMP[ta+2]>>4; GFX_BG1[tb+3] =TMP[ta+3]&15; GFX_BG1[tb+11]=TMP[ta+3]>>4; } FreeMem(TMP); GFX_BG0_SOLID = MakeSolidTileMap16x16(GFX_BG0, 0x05690); GFX_BG1_SOLID = make_solid_mask_8x8 (GFX_BG1, 0x10000); RAMSize=0x80000; if(!(RAM=AllocateMem(0x80000))) return; if(!(ROM=AllocateMem(0x200000))) return; // Setup 68020 Memory Map // ---------------------- AddUFMemoryMap(0x200000); RAM_BG0=RAM+0x30000; RAM_BG1=RAM+0x31000; RAM_BG2=RAM+0x32000; RAM_BG3=RAM+0x33000; RAM_SCR0=RAM+0x6A000; RAM_SCR1=RAM+0x6A002; RAM_SCR2=RAM+0x6A004; RAM_SCR3=RAM+0x6A006; SCR0_XOFS=0xF640; SCR1_XOFS=0xF740; SCR2_XOFS=0xF840; SCR3_XOFS=0xF940; SCR0_YOFS=0xF400; SCR1_YOFS=0xF400; SCR2_YOFS=0xF400; SCR3_YOFS=0xF400; if(!load_rom("d67-19.rom", RAM, 0x80000)) return; for(ta=0;ta<0x80000;ta++){ ROM[(ta<<2)+0]=RAM[ta]; } if(!load_rom("d67-18.rom", RAM, 0x80000)) return; for(ta=0;ta<0x80000;ta++){ ROM[(ta<<2)+1]=RAM[ta]; } if(!load_rom("d67-17.rom", RAM, 0x80000)) return; for(ta=0;ta<0x80000;ta++){ ROM[(ta<<2)+2]=RAM[ta]; } if(!load_rom("d67-23.rom", RAM, 0x80000)) return; for(ta=0;ta<0x80000;ta++){ ROM[(ta<<2)+3]=RAM[ta]; } memset(RAM+0x00000,0x00,0x80000); memset(RAM+0x69000,0xFF,0x01000); add_eeprom(EEPROM, 0x80, EPR_INVALIDATE_ON_ROM_CHANGE); load_eeprom(); // EEPROM HACK // ----------- WriteWord68k(&ROM[0x19FD6E],0x7F00); // raine #$00 <eeprom read/write> WriteWord68k(&ROM[0x19FD70],0x4ED6); // jmp (a6) // SPEED HACK // ---------- WriteWord68k(&ROM[0x000BEA],0x7F02); // raine #$02 <stop cpu> WriteWord68k(&ROM[0x000BEC],0x6100-10); // bra.s <loop> F3SystemEEPROMAccess=&F3SysEEPROMAccessMode2; set_colour_mapper(&col_map_xxxx_xxxx_rrrr_rrrr_gggg_gggg_bbbb_bbbb); InitPaletteMap(RAM+0x60000, 0x200, 0x40, 0x4000); init_m68k();}void ClearUndrFire(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_OBJ_A,OBJ_A_COUNT*0x100,0); #endif}void ExecuteUndrFireFrame(void){ Execute68020(800000);#ifdef RAINE_DEBUG print_debug("PC:%06x SR:%04x\n",regs.pc,regs.sr);#endif Interrupt68020(4); Interrupt68020(5); //IntF3System();}void DrawUndrFire(void){ int x,y,ta,zz,zzz,zzzz,x16,y16; UINT8 *map; ClearPaletteMap(); // Init tc0003vcu emulation // ------------------------ tc0003vcu_layer_count = 0; if(RefreshBuffers){ tc0003vcu.RAM = RAM+0x20000; tc0003vcu.mapper = &Map_24bit_xRGB; tc0003vcu.bmp_x = 64; tc0003vcu.bmp_y = 64; tc0003vcu.bmp_w = 320; tc0003vcu.bmp_h = 232; tc0003vcu.scr_x = 0; tc0003vcu.scr_y = 8; } 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, 16, map ); switch(RAM_BG0[zz]&0xC0){ case 0x00: Draw16x16_Mapped_Rot(&GFX_BG0[(ReadWord68k(&RAM_BG0[zz+2])&0x7FFF)<<8],x,y,map); break; case 0x40: Draw16x16_Mapped_FlipY_Rot(&GFX_BG0[(ReadWord68k(&RAM_BG0[zz+2])&0x7FFF)<<8],x,y,map); break; case 0x80: Draw16x16_Mapped_FlipX_Rot(&GFX_BG0[(ReadWord68k(&RAM_BG0[zz+2])&0x7FFF)<<8],x,y,map); break; case 0xC0: Draw16x16_Mapped_FlipXY_Rot(&GFX_BG0[(ReadWord68k(&RAM_BG0[zz+2])&0x7FFF)<<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])&0x7FFF; if(ta!=0){ MAP_PALETTE_MAPPED_NEW( ReadWord68k(&RAM_BG1[zz])&0x1FF, 16, 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(); } 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, 16, 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(); } 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, 16, 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(); } if(check_layer_enabled(f3_bg5_id)){ f3video_render_fg0_gfx2(); }}/*d67-01.rom | Ensoniq Sample Datad67-02.rom | Ensoniq Sample Datad67-03.rom | Zoom Tiles (plane#0)d67-04.rom | Zoom Tiles (plane#1)d67-05.rom | Zoom Tiles (plane#2)d67-06.rom | Zoom Tiles (plane#3)d67-07.rom | Zoom Tiles (plane#4)d67-08.rom | 16x16 F3 Tiles (even)d67-09.rom | 16x16 F3 Tiles (odd)d67-10.rom | 8x8 F2 Tiles (even)d67-11.rom | 8x8 F2 Tiles (odd)d67-12.rom | Mask data (???)d67-13.rom | Zoom Object Mapsd67-17.rom | 68020 rom (byte#2)d67-18.rom | 68020 rom (byte#1)d67-19.rom | 68020 rom (byte#0)d67-20.rom | 68000 rom (even)d67-21.rom | 68000 rom (odd)d67-23.rom | 68020 rom (byte#3)readme.txt | dumped by aracorn*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -