Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/mame/seibu/r2crypt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ static uint32_t core_decrypt(uint32_t ciphertext, int i1, int i2, int i3, int i4
const uint16_t x1Low = (x5[i2]<<11) ^ x11[i3] ^ gm(i4);
const uint32_t x1 = x1Low | (bitswap<16>(x1Low, 0,8,1,9, 2,10,3,11, 4,12,5,13, 6,14,7,15)<<16);

return partial_carry_sum32(v1, x1 ^ preXor, carryMask) ^ postXor;
return seibu_partial_carry_sum32(v1, x1 ^ preXor, carryMask) ^ postXor;
}

void raiden2_decrypt_sprites(uint32_t *data, uint32_t size)
Expand Down
6 changes: 6 additions & 0 deletions src/mame/seibu/r2crypt.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
// license:LGPL-2.1+
// copyright-holders:Olivier Galibert, Angelo Salese, David Haywood, Tomasz Slanina
#ifndef MAME_SEIBU_R2CRYPT_H
#define MAME_SEIBU_R2CRYPT_H

#pragma once

void raiden2_decrypt_sprites(uint32_t *data, uint32_t size);
void zeroteam_decrypt_sprites(uint32_t *data, uint32_t size);

#endif // MAME_SEIBU_R2CRYPT_H
10 changes: 5 additions & 5 deletions src/mame/seibu/seibu_helper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

// add two numbers generating carry from one bit to the next only if
// the corresponding bit in carry_mask is 1
u32 partial_carry_sum(u32 add1, u32 add2, u32 carry_mask, int bits)
u32 seibu_partial_carry_sum(u32 add1, u32 add2, u32 carry_mask, int bits)
{
int res = 0;
int carry = 0;
Expand All @@ -33,12 +33,12 @@ u32 partial_carry_sum(u32 add1, u32 add2, u32 carry_mask, int bits)
return res;
}

u32 partial_carry_sum32(u32 add1, u32 add2, u32 carry_mask)
u32 seibu_partial_carry_sum32(u32 add1, u32 add2, u32 carry_mask)
{
return partial_carry_sum(add1, add2, carry_mask, 32);
return seibu_partial_carry_sum(add1, add2, carry_mask, 32);
}

u32 partial_carry_sum24(u32 add1, u32 add2, u32 carry_mask)
u32 seibu_partial_carry_sum24(u32 add1, u32 add2, u32 carry_mask)
{
return partial_carry_sum(add1, add2, carry_mask, 24);
return seibu_partial_carry_sum(add1, add2, carry_mask, 24);
}
6 changes: 3 additions & 3 deletions src/mame/seibu/seibu_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@

#pragma once

u32 partial_carry_sum(u32 add1, u32 add2, u32 carry_mask, int bits);
u32 seibu_partial_carry_sum(u32 add1, u32 add2, u32 carry_mask, int bits);

u32 partial_carry_sum32(u32 add1, u32 add2, u32 carry_mask);
u32 partial_carry_sum24(u32 add1, u32 add2, u32 carry_mask);
u32 seibu_partial_carry_sum32(u32 add1, u32 add2, u32 carry_mask);
u32 seibu_partial_carry_sum24(u32 add1, u32 add2, u32 carry_mask);

#endif // MAME_SEIBU_SEIBU_HELPER_H
32 changes: 16 additions & 16 deletions src/mame/seibu/seibuspi_m.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
#include "seibu_helper.h"
#include "seibuspi_m.h"

static u32 partial_carry_sum16(u32 add1, u32 add2, u32 carry_mask)
static u32 seibu_partial_carry_sum16(u32 add1, u32 add2, u32 carry_mask)
{
return partial_carry_sum(add1, add2, carry_mask, 16);
return seibu_partial_carry_sum(add1, add2, carry_mask, 16);
}


Expand Down Expand Up @@ -231,8 +231,8 @@ void seibuspi_sprite_decrypt(u8 *src, int rom_size)
(key( 8,addr) << 30) |
(key( 0,addr) << 31);

s1 = partial_carry_sum(s1, add1, 0x3a59, 16) ^ 0x843a;
s2 = partial_carry_sum(s2, add2, 0x28d49cac, 32) ^ 0xc8e29f84;
s1 = seibu_partial_carry_sum(s1, add1, 0x3a59, 16) ^ 0x843a;
s2 = seibu_partial_carry_sum(s2, add2, 0x28d49cac, 32) ^ 0xc8e29f84;


// reorder the bits in the order MAME expects to decode the graphics
Expand Down Expand Up @@ -277,8 +277,8 @@ CPU 'main' (PC=002A0709): unmapped program memory dword write to 0000054C = 0000
CPU 'main' (PC=002A0709): unmapped program memory dword write to 0000054C = 00005237 & 0000FFFF // okok
CPU 'main' (PC=002A0709): unmapped program memory dword write to 0000054C = 0000A948 & 0000FFFF // okok

plane54 = partial_carry_sum16(plane54, 0xabcb, 0x55aa) ^ 0x6699;
plane3210 = partial_carry_sum32(plane3210, 0x654321d9 ^ 0x42, 0x1d463748) ^ 0x0ca352a9;
plane54 = seibu_partial_carry_sum16(plane54, 0xabcb, 0x55aa) ^ 0x6699;
plane3210 = seibu_partial_carry_sum32(plane3210, 0x654321d9 ^ 0x42, 0x1d463748) ^ 0x0ca352a9;

******************************************************************************************/

Expand Down Expand Up @@ -307,8 +307,8 @@ void seibuspi_rise10_sprite_decrypt(u8 *rom, int size)
27,6,15,21,1,28,10,20,
7,31,26,0,18,9,19,8);

plane54 = partial_carry_sum16(plane54, 0xabcb, 0x55aa) ^ 0x6699;
plane3210 = partial_carry_sum32(plane3210, 0x654321d9 ^ 0x42, 0x1d463748) ^ 0x0ca352a9;
plane54 = seibu_partial_carry_sum16(plane54, 0xabcb, 0x55aa) ^ 0x6699;
plane3210 = seibu_partial_carry_sum32(plane3210, 0x654321d9 ^ 0x42, 0x1d463748) ^ 0x0ca352a9;

rom[0 * size + 2 * i] = plane54 >> 8;
rom[0 * size + 2 * i + 1] = plane54 >> 0;
Expand Down Expand Up @@ -347,8 +347,8 @@ cpu #0 (PC=002C40F9): unmapped program memory dword write to 0000054C = 000021D9
cpu #0 (PC=002C40F9): unmapped program memory dword write to 0000054C = 00005B3B & 0000FFFF // okok
cpu #0 (PC=002C40F9): unmapped program memory dword write to 0000054C = 00000300 & 0000FFFF

plane543 = partial_carry_sum32( plane543, 0xabcb64, 0x55aadd ) ^ 0xab6a4c;
plane210 = partial_carry_sum24( plane210, i, 0xd6375b ) ^ 0x8bf23b;
plane543 = seibu_partial_carry_sum32( plane543, 0xabcb64, 0x55aadd ) ^ 0xab6a4c;
plane210 = seibu_partial_carry_sum24( plane210, i, 0xd6375b ) ^ 0x8bf23b;


feversoc
Expand All @@ -367,9 +367,9 @@ CPU 'main' (PC=00021C74): unmapped program memory dword write to 0601004C = EAAE
CPU 'main' (PC=00021C74): unmapped program memory dword write to 0601004C = D5AC0000 & FFFF0000 // okok
CPU 'main' (PC=00021C74): unmapped program memory dword write to 0601004C = 03000000 & FFFF0000

plane543 = partial_carry_sum32(plane543, 0x9df5b2, 0x9ae999) ^ 0x4a32e9;
plane210 = partial_carry_sum24(plane210, i, 0x968bd5) ^ 0x1d97ac;
plane210 = partial_carry_sum24(plane210, 1, 0x000001);
plane543 = seibu_partial_carry_sum32(plane543, 0x9df5b2, 0x9ae999) ^ 0x4a32e9;
plane210 = seibu_partial_carry_sum24(plane210, i, 0x968bd5) ^ 0x1d97ac;
plane210 = seibu_partial_carry_sum24(plane210, 1, 0x000001);

******************************************************************************************/

Expand Down Expand Up @@ -433,10 +433,10 @@ static void seibuspi_rise11_sprite_decrypt(u8 *rom, int size,
(BIT(b1, 5)<<22) |
(BIT(b3,15)<<23);

plane543 = partial_carry_sum32(plane543, k1, k2) ^ k3;
plane210 = partial_carry_sum24(plane210, i, k4) ^ k5;
plane543 = seibu_partial_carry_sum32(plane543, k1, k2) ^ k3;
plane210 = seibu_partial_carry_sum24(plane210, i, k4) ^ k5;
if (feversoc_kludge)
plane210 = partial_carry_sum24(plane210, 1, 0x000001);
plane210 = seibu_partial_carry_sum24(plane210, 1, 0x000001);

rom[0 * size + 2 * i] = plane543 >> 16;
rom[0 * size + 2 * i + 1] = plane543 >> 8;
Expand Down
6 changes: 6 additions & 0 deletions src/mame/seibu/seibuspi_m.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
// license:BSD-3-Clause
// copyright-holders:Ville Linde, Nicola Salmoria
#ifndef MAME_SEIBU_SEIBUSPI_M_H
#define MAME_SEIBU_SEIBUSPI_M_H

#pragma once

// TODO: modernize code

void seibuspi_sprite_decrypt(u8 *src, int romsize);
void seibuspi_rise10_sprite_decrypt(u8 *rom, int romsize);
void seibuspi_rise11_sprite_decrypt_rfjet(u8 *rom, int romsize);
void seibuspi_rise11_sprite_decrypt_feversoc(u8 *rom, int romsize);

#endif // MAME_SEIBU_SEIBUSPI_M_H
2 changes: 1 addition & 1 deletion src/mame/seibu/seibuspi_v.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ static u32 decrypt_tile(u32 val, int tileno, u32 key1, u32 key2, u32 key3)
{
val = bitswap<24>(val, 18,19,9,5, 10,17,16,20, 21,22,6,11, 15,14,4,23, 0,1,7,8, 13,12,3,2);

return partial_carry_sum24(val, tileno + key1, key2) ^ key3;
return seibu_partial_carry_sum24(val, tileno + key1, key2) ^ key3;
}

static void decrypt_text(u8 *rom, u32 key1, u32 key2, u32 key3)
Expand Down
Loading