diff --git a/src/mame/subsino/subsino.cpp b/src/mame/subsino/subsino.cpp index c064e7f3bcb..14c9f9c4075 100644 --- a/src/mame/subsino/subsino.cpp +++ b/src/mame/subsino/subsino.cpp @@ -223,7 +223,7 @@ To Do: ***************************************************************************/ #include "emu.h" -#include "subsino_m.h" +#include "subsino_crypt.h" #include "cpu/z180/hd647180x.h" #include "machine/i8255.h" @@ -3901,7 +3901,8 @@ ROM_END void subsino_state::init_victor5() { - subsino_decrypt(machine(), victor5_bitswaps, victor5_xors, 0xc000); + uint8_t *rom = memregion( "maincpu" )->base(); + subsino_decrypt(rom, victor5_bitswaps, victor5_xors, 0xc000); m_flash_packet = 0; m_flash_packet_start = 0; @@ -3914,12 +3915,14 @@ void subsino_state::init_victor5() void subsino_state::init_victor21() { - subsino_decrypt(machine(), victor21_bitswaps, victor21_xors, 0xc000); + uint8_t *rom = memregion( "maincpu" )->base(); + subsino_decrypt(rom, victor21_bitswaps, victor21_xors, 0xc000); } void subsino_state::init_crsbingo() { - subsino_decrypt(machine(), crsbingo_bitswaps, crsbingo_xors, 0xc000); + uint8_t *rom = memregion( "maincpu" )->base(); + subsino_decrypt(rom, crsbingo_bitswaps, crsbingo_xors, 0xc000); m_flash_packet = 0; m_flash_packet_start = 0; @@ -3932,12 +3935,14 @@ void subsino_state::init_crsbingo() void subsino_state::init_sharkpy() { - subsino_decrypt(machine(), sharkpy_bitswaps, sharkpy_xors, 0xa000); + uint8_t *rom = memregion( "maincpu" )->base(); + subsino_decrypt(rom, sharkpy_bitswaps, sharkpy_xors, 0xa000); } void subsino_state::init_sharkpye() { - subsino_decrypt(machine(), victor5_bitswaps, victor5_xors, 0xa000); + uint8_t *rom = memregion( "maincpu" )->base(); + subsino_decrypt(rom, victor5_bitswaps, victor5_xors, 0xa000); } void subsino_state::init_smoto20() @@ -3955,8 +3960,7 @@ void subsino_state::init_smoto13() void subsino_state::init_tisub() { uint8_t *rom = memregion( "maincpu" )->base(); - - init_victor5(); + subsino_decrypt(rom, victor5_bitswaps, victor5_xors, 0xc000); /* this trips a z180 MMU core bug? It unmaps a region then the program code jumps to that region... */ rom[0x64c8] = 0x00; @@ -3970,8 +3974,7 @@ void subsino_state::init_tisub() void subsino_state::init_tisuba() { uint8_t *rom = memregion( "maincpu" )->base(); - - init_victor5(); + subsino_decrypt(rom, victor5_bitswaps, victor5_xors, 0xc000); /* this trips a z180 MMU core bug? It unmaps a region then the program code jumps to that region... */ rom[0x6491] = 0x00; @@ -3984,9 +3987,8 @@ void subsino_state::init_tisuba() void subsino_state::init_tisubb() { - subsino_decrypt(machine(), tisubb_bitswaps, tisubb_xors, 0xc000); - uint8_t *rom = memregion( "maincpu" )->base(); + subsino_decrypt(rom, tisubb_bitswaps, tisubb_xors, 0xc000); /* this trips a z180 MMU core bug? It unmaps a region then the program code jumps to that region... */ rom[0x60da] = 0x00; diff --git a/src/mame/subsino/subsino2.cpp b/src/mame/subsino/subsino2.cpp index 806845f92ad..b67c6a763bb 100644 --- a/src/mame/subsino/subsino2.cpp +++ b/src/mame/subsino/subsino2.cpp @@ -55,8 +55,8 @@ by the otherwise seemingly unnecessary internal ROMs. ************************************************************************************************************/ #include "emu.h" +#include "subsino_crypt.h" #include "subsino_io.h" -#include "subsino_m.h" #include "cpu/h8/h83048.h" #include "cpu/i86/i186.h" @@ -3583,7 +3583,7 @@ ROM_END void subsino2_state::init_mtrain() { - subsino_decrypt(machine(), crsbingo_bitswaps, crsbingo_xors, 0x8000); + subsino_decrypt(memregion("maincpu")->base(), crsbingo_bitswaps, crsbingo_xors, 0x8000); } @@ -3618,7 +3618,7 @@ ROM_END void subsino2_state::init_tbonusal() { - subsino_decrypt(machine(), sharkpy_bitswaps, sharkpy_xors, 0x8000); + subsino_decrypt(memregion("maincpu")->base(), sharkpy_bitswaps, sharkpy_xors, 0x8000); } /*************************************************************************** @@ -3919,7 +3919,7 @@ ROM_END void subsino2_state::init_wtrnymph() { - subsino_decrypt(machine(), victor5_bitswaps, victor5_xors, 0x8000); + subsino_decrypt(memregion("maincpu")->base(), victor5_bitswaps, victor5_xors, 0x8000); } GAME( 1996, mtrain, 0, mtrain, mtrain, subsino2_state, init_mtrain, ROT0, "Subsino", "Magic Train (Ver. 1.31)", 0 ) diff --git a/src/mame/subsino/subsino_m.cpp b/src/mame/subsino/subsino_crypt.cpp similarity index 84% rename from src/mame/subsino/subsino_m.cpp rename to src/mame/subsino/subsino_crypt.cpp index a162c503352..2e7f71e5fff 100644 --- a/src/mame/subsino/subsino_m.cpp +++ b/src/mame/subsino/subsino_crypt.cpp @@ -81,34 +81,14 @@ void victor21_bitswaps(uint8_t *decrypt, int i) // Decrypt: -[[maybe_unused]] static void dump_decrypted(running_machine& machine, uint8_t* decrypt) +void subsino_decrypt(uint8_t *region, void (*bitswaps)(uint8_t *decrypt, int i), const uint8_t *xors, int size) { - auto filename = "dat_" + std::string(machine.system().name); - auto fp = fopen(filename.c_str(), "w+b"); - if (fp) - { - fwrite(decrypt, 0x10000, 1, fp); - fclose(fp); - } -} + std::unique_ptr decrypt = std::make_unique(size); -void subsino_decrypt(running_machine& machine, void (*bitswaps)(uint8_t *decrypt, int i), const uint8_t *xors, int size) -{ - std::unique_ptr decrypt = std::make_unique(0x10000); - uint8_t *const region = machine.root_device().memregion("maincpu")->base(); - - for (int i = 0; i < 0x10000; i++) + for (int i = 0; i < size; i++) { - if (i < size) - { - decrypt[i] = region[i] ^ xors[i & 7]; - bitswaps(decrypt.get(), i); - } - else - { - decrypt[i] = region[i]; - } + decrypt[i] = region[i] ^ xors[i & 7]; + bitswaps(decrypt.get(), i); } -// dump_decrypted(machine, decrypt); - memcpy(region, decrypt.get(), 0x10000); + memcpy(region, decrypt.get(), size); } diff --git a/src/mame/subsino/subsino_m.h b/src/mame/subsino/subsino_crypt.h similarity index 71% rename from src/mame/subsino/subsino_m.h rename to src/mame/subsino/subsino_crypt.h index ffad2f463f0..b9365fadd83 100644 --- a/src/mame/subsino/subsino_m.h +++ b/src/mame/subsino/subsino_crypt.h @@ -1,7 +1,7 @@ // license:BSD-3-Clause // copyright-holders:Luca Elia, David Haywood, Angelo Salese, Roberto Fresca -#ifndef MAME_SUBSINO_SUBSINO_M_H -#define MAME_SUBSINO_SUBSINO_M_H +#ifndef MAME_SUBSINO_SUBSINO_CRYPT_H +#define MAME_SUBSINO_SUBSINO_CRYPT_H #pragma once @@ -18,6 +18,6 @@ void tisubb_bitswaps (uint8_t *decrypt, int i); void victor5_bitswaps (uint8_t *decrypt, int i); void victor21_bitswaps(uint8_t *decrypt, int i); -void subsino_decrypt(running_machine& machine, void (*bitswaps)(uint8_t *decrypt, int i), const uint8_t *xors, int size); +void subsino_decrypt(uint8_t *region, void (*bitswaps)(uint8_t *decrypt, int i), const uint8_t *xors, int size); -#endif // MAME_SUBSINO_SUBSINO_M_H +#endif // MAME_SUBSINO_SUBSINO_CRYPT_H