FinalBurn Alpha 2.9x in the preparation of CPS2 game drivers: Hu Yingzhuo FinalBurn Alpha is one of today's best CPS1 / 2 simulator, even more valuable is that it is completely open source. Starting from FinalBurn Alpha 2.93, the Finalburn Alpha group (later referred to as FBA Group) turned to multi-function, multi-model support, rather than a new version of a new game, or something The child has changed a new version. This makes the developer, but the player feels some inconvenience. At first, I wrote some new version of FBA for everyone, but this will not be able to do with the version of the FBA team. Recently, I need to put the main energy on the online game, so there is not much time to write these drivers for everyone. Here, I am a for example for Finalburn Alpha 2.93 CPS2 game 19XX drivers, give you a explanation so that you can write new drivers yourself.
First, you want to include the drive head file cps.h, the statement is as follows: #include "cps.h", it is the input device definition, nor does it use to copy the example: static struct burninputinfo drvinputlist [] = {{"P1 Coin ", 0, cpsinp020 4," p1 coin "}, {" p1 start ", 0, cpsinp020 0," p1 start "}, {" p1 up ", 0, cpsinp001 3," p1 up "} {"P1 down", 0, cpsinp001 2, "p1 down"}, {"p1 left", 0, cpsinp001 1, "p1 left"}, {"p1 right", 0, cpsinp001 0, " P1 Right "}, {" p1 shot ", 0, cpsinp001 4," p1 fire 1 "}, {" p1 bomb ", 0, cpsinp001 5," p1 fire 2 "}, // 19xx is two-button game If it is a 3-key game, you only need to add it in order, such as // {"p1 autofire", 0, cpsinp001 6, "p1 auto fire"}, {"p2 coin", 0, cpsinp020 5, "p2 coin"}, {"p2 start", 0, cpsinp020 1, "p2 start"}, {"p2 up", 0, cpsinp000 3, "p2 up"}, {"p2 down", 0, CPSINP000 2, "P2 Down"}, {"P2 LEFT", 0, CPSINP000 1, "P2 Left"}, {"P2 Right", 0, CPSINP000 0, "P2 Right"}, {"P2 Shot ", CPSINP000 4," P2 Fire 1 "}, {" P2 Bomb ", 0, CPSINP000 5," P2 Fire 2 "}, {" reset ", 0, & cpsreset," reset "}, {" Diagnostic, 0, CPSINP021 1, "DIAG"}, {"service", 0, cpsinp021 2, "service"} STDINPUTINFO (DRV); there is also a special case, because the CPS2 bucket is very large, and the button definition method is used, such as "Youth Street", we can use the following method to define: stdinputinfospec (drv, cpsfsi) ); According to Razoola's definition, the ROM number is numbered in accordance with the alignment of the chip: the specific to the file name, the extension number is as follows:
01-02 QSound Z80 Data 03-10 Program Data 11-12 QSound Sample Data 13-20 Image Data ROM Table Write us to see the 19XX Writing: Static struct burnrominfo ninexxrowRomDesc [] = {// file name, file length, CRC check code, type {"19xUX.03", 0x80000, 0x239a08ae, 0x10}, // 0 xor table {"19xUX.04", 0x80000, 0xc13a1072, 0x10}, // 1 {"19xUX.05", 0x80000 0x8c066ec3, 0x10}, // 2 {"19xUX.06", 0x80000, 0x4b1caeb9, 0x10}, // 3 {"19xU.03", 0x80000, 0x05955268, 0x10}, // 4 68000 code requires the above decryption {"19xU.04", 0x80000, 0x3111ab7f, 0x10}, // 5 {"19xU.05", 0x80000, 0x38df4a63, 0x10}, // 6 {"19xU.06", 0x80000, 0x5c7e60d3, 0x10}, // 7 {"19X.07", 0x80000, 0x61c0296c, 0x10}, // 8 {"19x.13", 0x080000, 0x427aeb18, 1}, // 9 image data, here to press 3, 5, 7, 9, 4, 6, 8 ,0 in such sequence {"19x.15", 0x080000, 0x63bdbf54, 1}, // 10 {"19x.17", 0x080000, 0x2dfe18b5, 1}, // 11 {"19X.19 ", 0x080000, 0xcbef9579, 1}, // 12 {" 19x.14 ", 0x200000, 0xE916967C, 1}, // 13 {" 19x.16 ", 0x200000, 0x6E75F3DB, 1}, // 14 {" 19x. 18 ", 0x200000, 0X2213E798, 1}, // 15 {" 19X.20 ", 0x200000, 0XAB9D5B96, 1}, // 16 {" 19X.01 ", 0x020000, 0xEF55195E, 2}, // 17 QSound data Z80 Sound data {" 19X.11 ", 0x200000, 0xD38Beef3, 2}, // 18 QSound sound sampling {" 19X.12 ", 0x200000, 0xD47c96E2, 2}, // 19}; std_rom_pick (ninexx) STD_ROM_FN (NINEXX) NINEXX is us The name that can be defined, it is also possible to change _19xx.
Then the driver information structure, the 19XX write is as follows: The game ROM file name is 19xx, that corresponds to the 19xx.zip game name annotation or other information production business model production agents the main ROM name, such as 19xx Spanish version, you need to hit it here "19xx" motherboard BIOS, unused, defined as null run flag, if you need to add BDF_ROTATE_GRAPHICS_CCW maximum player number hardware type Take ZIP name Special function ROM information Structure ROM name structure Enter configuration information table DIP configuration table driver initial function Close Function Game Frame Processing Function Game Refresh Function Game Tailor Process Function Game Tune Space Game Screen Width Game Screen Height Game Screen Ascending Struct Burndriver Burndrvcps19xx = {{"19xx", "19xx: The War Against Destiny (US 951207)" , "", "Capcom", "CPS2", "1995", NULL, NULL}, BDF_GAME_WORKING | BDF_ROTATE_GRAPHICS_CCW, 2, HARDWARE_CAPCOM_CPS2, NULL, NinexxRomInfo, NinexxRomName, DrvInputInfo, NULL, DrvInit, DrvExit, Cps2Frame, CpsRedraw, CpsAreaScan, & CpsRecalcPal , 224, 384, 3, 4}; DrVEXIT function We don't have to take it, directly copy one, the key is the Drvinit function.