@@ -35,6 +35,7 @@ Year + Game PCB ID CPU Video
35
35
05 Dino Dino T-3802A ASTRO V102PX-010? ASTRO V05 ASTRO F02 2003-03-12 Encrypted
36
36
05 Stone Age L1 ASTRO V102PX-012? ASTRO V05(x2) ASTRO F02 2004-09-04 Encrypted
37
37
05? Hacher (hack) M1.2 ? ? ASTRO F02 2005-02-18 Encrypted
38
+ 05 Wild Witch O (CS350P032) ASTRO V102PX-016? ASTRO V06 ASTRO F02 2005-09-17 Encrypted
38
39
06 Captain Shark M1.2 ASTRO V102PX-006? ASTRO V06 ASTRO F02 2005-05-29 Encrypted
39
40
06 Win Win Bingo M1.2 ASTRO V102PX-006? ASTRO V06 ASTRO F02 2005-09-17 Encrypted
40
41
07? Western Venture O (CS350P032) ASTRO V102? ASTRO V07 ASTRO F01 2007-06-03 Encrypted
@@ -68,6 +69,7 @@ Year + Game PCB ID CPU Video
68
69
- monkeyl,a: need RE of the CPU code, inputs and layout. After reset it initializes.
69
70
- speedmst,a,b: need RE of the CPU code, correct EEPROM. Won't boot right now.
70
71
- cptshark: needs verifying of inputs and layout
72
+ - wwitch: needs correct GFX ROMs loading / decode, RE of the CPU code, inputs, outputs. Currently starts but then freezes.
71
73
72
74
*************************************************************************************************************/
73
75
@@ -299,6 +301,7 @@ class zoo_state : public astrocorp_state
299
301
void monkeyl (machine_config &config);
300
302
void speedmst (machine_config &config);
301
303
void winbingo (machine_config &config);
304
+ void wwitch (machine_config &config);
302
305
void zoo (machine_config &config);
303
306
304
307
void init_cptshark ();
@@ -314,6 +317,7 @@ class zoo_state : public astrocorp_state
314
317
void init_speedmstb ();
315
318
void init_winbingo ();
316
319
void init_winbingoa ();
320
+ void init_wwitch ();
317
321
void init_zoo ();
318
322
319
323
virtual void eeprom_w (u8 data) override ;
@@ -352,13 +356,15 @@ class zoo_state : public astrocorp_state
352
356
void monkeyl_map (address_map &map);
353
357
void speedmst_map (address_map &map);
354
358
void winbingo_map (address_map &map);
359
+ void wwitch_map (address_map &map);
355
360
void zoo_map (address_map &map);
356
361
357
- static const decryption_info dinodino_table;
358
362
static const decryption_info gostop_table;
359
- static const decryption_info magibombd_table;
360
- static const decryption_info winbingo_table;
361
- static const decryption_info zoo_table;
363
+ static const decryption_info v102_px05_table;
364
+ static const decryption_info v102_px06_table;
365
+ static const decryption_info v102_px10_table;
366
+ static const decryption_info v102_px14_table;
367
+ static const decryption_info v102_px16_table;
362
368
};
363
369
364
370
// Adds RAMDAC and 16x32 sprites
@@ -962,6 +968,23 @@ void zoo_state::speedmst_map(address_map &map)
962
968
// map(0x??0001, 0x??0001).w(FUNC(zoo_state::oki_bank_w))
963
969
}
964
970
971
+ void zoo_state::wwitch_map (address_map &map)
972
+ {
973
+ map (0x000000 , 0x03ffff ).rom ().mirror (0x800000 ); // POST checks for ROM checksum at mirror
974
+ map (0xa00001 , 0xa00001 ).rw (m_oki, FUNC (okim6295_device::read ), FUNC (okim6295_device::write ));
975
+ map (0xa80000 , 0xa80fff ).ram ().share (" spriteram" );
976
+ map (0xa82000 , 0xa82001 ).nopr ().w (FUNC (zoo_state::draw_sprites_w));
977
+ map (0xa84000 , 0xa84001 ).portr (" INPUTS" );
978
+ map (0xa88001 , 0xa88001 ).w (FUNC (zoo_state::eeprom_w));
979
+ map (0xa8a000 , 0xa8a001 ).w (FUNC (zoo_state::magibomb_outputs_w));
980
+ map (0xa8e000 , 0xa8e001 ).portr (" EEPROM_IN" );
981
+ map (0xb00000 , 0xb00000 ).w (FUNC (zoo_state::oki_bank_w));
982
+ map (0xb80000 , 0xb83fff ).ram ().share (" nvram" ); // battery
983
+ map (0xc00000 , 0xc00001 ).portr (" CPUCODE_IN" );
984
+ map (0xd00000 , 0xd001ff ).ram ().w (m_palette, FUNC (palette_device::write16)).share (" palette" );
985
+ // map(0x??0001, 0x??0001).w(FUNC(zoo_state::screen_enable_w)); // unknown location
986
+ }
987
+
965
988
void astoneag_state::astoneag_map (address_map &map)
966
989
{
967
990
map (0x000000 , 0x03ffff ).rom ().mirror (0x800000 ); // POST checks for ROM checksum at mirror
@@ -1403,6 +1426,12 @@ void zoo_state::speedmst(machine_config &config)
1403
1426
m_maincpu->set_addrmap (AS_PROGRAM, &zoo_state::speedmst_map);
1404
1427
}
1405
1428
1429
+ void zoo_state::wwitch (machine_config &config)
1430
+ {
1431
+ winbingo (config);
1432
+ m_maincpu->set_addrmap (AS_PROGRAM, &zoo_state::wwitch_map);
1433
+ }
1434
+
1406
1435
void astoneag_state::ramdac_map (address_map &map)
1407
1436
{
1408
1437
map (0x000 , 0x2ff ).rw (m_ramdac, FUNC (ramdac_device::ramdac_pal_r), FUNC (ramdac_device::ramdac_rgb666_w));
@@ -2493,6 +2522,33 @@ ROM_START( cptshark ) // clearly based on Win Win Bingo, still has strings for i
2493
2522
ROM_LOAD( " cptshark_cpucode.key" , 0x00 , 0x02 , CRC(c38c8e25) SHA1(7e866fc75f4ddbbd6efbbd359f2b378c798e2cec) )
2494
2523
ROM_END
2495
2524
2525
+ /* **************************************************************************
2526
+
2527
+ Wild Witch
2528
+ Astro Corp. / American Alpha
2529
+
2530
+ ***************************************************************************/
2531
+
2532
+ ROM_START( wwitch )
2533
+ ROM_REGION( 0x40000 , " maincpu" , 0 )
2534
+ ROM_LOAD16_BYTE( " 1_wicked_w_aa.01.a.u26" , 0x00000 , 0x20000 , CRC(6c654105) SHA1(b07e807864d7d0ccb80111369f8dc205fe45aea4) ) // F29C51001T
2535
+ ROM_LOAD16_BYTE( " 2_wicked_w_aa.01.a.u25" , 0x00001 , 0x20000 , CRC(66206bb4) SHA1(80513d7dc7cd664238f01a6c1b3e40e7696e2211) ) // F29C51001T
2536
+
2537
+ ROM_REGION( 0x600000 , " sprites" , 0 )
2538
+ ROM_LOAD( " mx29f1610mc.bin" , 0x000000 , 0x200000 , CRC(8dad2fc0) SHA1(88c4bda8e247839029a8c9a84d3bd598892b1775) ) // no U location on the PCB, silkscreened 'ROM # 7' on PCB under the chip
2539
+ ROM_LOAD( " mx29f1610mc.u30" , 0x200000 , 0x200000 , CRC(d4e7b00d) SHA1(2689d19fcdd828d0d47265362f6625377a90c1e4) ) // silkscreened 'ROM # 4' on PCB under the chip
2540
+ ROM_LOAD( " mx29f1610mc.u51" , 0x400000 , 0x200000 , CRC(05bc898d) SHA1(c88c14e4858943b2ea719abe0cc9ac0738d682dd) ) // silkscreened 'ROM # 3' on PCB under the chip
2541
+
2542
+ ROM_REGION( 0x80000 , " oki" , 0 )
2543
+ ROM_LOAD( " 5_wicked_w_aa.01.a.bin" , 0x00000 , 0x80000 , CRC(298014f3) SHA1(98da24e84ec69c48e8754f8406e11e68fb352e28) )
2544
+
2545
+ ROM_REGION16_LE( 0x80 , " eeprom" , 0 )
2546
+ ROM_LOAD( " 93c46.u13" , 0x00 , 0x80 , CRC(663f14cd) SHA1(8a675a4e270d86d3a350e7ddbeb3f9d958798bd1) )
2547
+
2548
+ ROM_REGION16_LE( 0x02 , " astro_cpucode" , 0 )
2549
+ ROM_LOAD( " wwitch_cpucode.key" , 0x00 , 0x02 , NO_DUMP )
2550
+ ROM_END
2551
+
2496
2552
void astrocorp_state::init_showhand()
2497
2553
{
2498
2554
#if 0
@@ -2602,7 +2658,7 @@ void zoo_state::decrypt_rom(const decryption_info &table)
2602
2658
}
2603
2659
}
2604
2660
2605
- const zoo_state::decryption_info zoo_state::magibombd_table = {
2661
+ const zoo_state::decryption_info zoo_state::v102_px14_table = {
2606
2662
{
2607
2663
{
2608
2664
{ 8 , 11 , 9 },
@@ -2636,7 +2692,7 @@ const zoo_state::decryption_info zoo_state::magibombd_table = {
2636
2692
2637
2693
void zoo_state::init_magibombd ()
2638
2694
{
2639
- decrypt_rom (magibombd_table );
2695
+ decrypt_rom (v102_px14_table );
2640
2696
#if 1
2641
2697
// TODO: There's more stuff happening for addresses < 0x400...
2642
2698
// override reset vector for now
@@ -2652,7 +2708,7 @@ void zoo_state::init_magibombd()
2652
2708
2653
2709
void zoo_state::init_magibombg ()
2654
2710
{
2655
- decrypt_rom (magibombd_table );
2711
+ decrypt_rom (v102_px14_table );
2656
2712
#if 1
2657
2713
// TODO: There's more stuff happening for addresses < 0x400...
2658
2714
// override reset vector for now
@@ -2666,7 +2722,7 @@ void zoo_state::init_magibombg()
2666
2722
#endif
2667
2723
}
2668
2724
2669
- const zoo_state::decryption_info zoo_state::winbingo_table = {
2725
+ const zoo_state::decryption_info zoo_state::v102_px06_table = {
2670
2726
{
2671
2727
{
2672
2728
{ 8 , 11 , 9 },
@@ -2700,7 +2756,7 @@ const zoo_state::decryption_info zoo_state::winbingo_table = {
2700
2756
2701
2757
void zoo_state::init_winbingo ()
2702
2758
{
2703
- decrypt_rom (winbingo_table );
2759
+ decrypt_rom (v102_px06_table );
2704
2760
#if 1
2705
2761
// TODO: There's more stuff happening for addresses < 0x400...
2706
2762
// override reset vector for now
@@ -2714,7 +2770,7 @@ void zoo_state::init_winbingo()
2714
2770
2715
2771
void zoo_state::init_winbingoa ()
2716
2772
{
2717
- decrypt_rom (winbingo_table );
2773
+ decrypt_rom (v102_px06_table );
2718
2774
#if 1
2719
2775
// TODO: There's more stuff happening for addresses < 0x400...
2720
2776
// override reset vector for now
@@ -2728,7 +2784,7 @@ void zoo_state::init_winbingoa()
2728
2784
2729
2785
void zoo_state::init_hacher ()
2730
2786
{
2731
- decrypt_rom (winbingo_table );
2787
+ decrypt_rom (v102_px06_table );
2732
2788
#if 1
2733
2789
// TODO: There's more stuff happening for addresses < 0x400...
2734
2790
// override reset vector for now
@@ -2742,7 +2798,7 @@ void zoo_state::init_hacher()
2742
2798
2743
2799
void zoo_state::init_cptshark ()
2744
2800
{
2745
- decrypt_rom (winbingo_table );
2801
+ decrypt_rom (v102_px06_table );
2746
2802
#if 1
2747
2803
// TODO: There's more stuff happening for addresses < 0x400...
2748
2804
// override reset vector for now
@@ -2754,7 +2810,7 @@ void zoo_state::init_cptshark()
2754
2810
#endif
2755
2811
}
2756
2812
2757
- const zoo_state::decryption_info zoo_state::zoo_table = {
2813
+ const zoo_state::decryption_info zoo_state::v102_px05_table = {
2758
2814
{
2759
2815
{
2760
2816
{ 8 , 9 , 10 },
@@ -2788,7 +2844,7 @@ const zoo_state::decryption_info zoo_state::zoo_table = {
2788
2844
2789
2845
void zoo_state::init_zoo ()
2790
2846
{
2791
- decrypt_rom (zoo_table );
2847
+ decrypt_rom (v102_px05_table );
2792
2848
#if 1
2793
2849
// TODO: There's more stuff happening for addresses < 0x400...
2794
2850
// override reset vector for now
@@ -2803,7 +2859,7 @@ void zoo_state::init_zoo()
2803
2859
#endif
2804
2860
}
2805
2861
2806
- const zoo_state::decryption_info zoo_state::dinodino_table = {
2862
+ const zoo_state::decryption_info zoo_state::v102_px10_table = {
2807
2863
{
2808
2864
{
2809
2865
{ 8 , 11 , 9 },
@@ -2837,7 +2893,7 @@ const zoo_state::decryption_info zoo_state::dinodino_table = {
2837
2893
2838
2894
void zoo_state::init_dinodino ()
2839
2895
{
2840
- decrypt_rom (dinodino_table );
2896
+ decrypt_rom (v102_px10_table );
2841
2897
#if 1
2842
2898
// TODO: There's more stuff happening for addresses < 0x400...
2843
2899
// override reset vector for now
@@ -2897,7 +2953,7 @@ void zoo_state::init_gostop()
2897
2953
2898
2954
void zoo_state::init_monkeyl ()
2899
2955
{
2900
- decrypt_rom (zoo_table );
2956
+ decrypt_rom (v102_px05_table );
2901
2957
#if 1
2902
2958
// TODO: There's more stuff happening for addresses < 0x400...
2903
2959
// override reset vector for now
@@ -2913,7 +2969,7 @@ void zoo_state::init_monkeyl()
2913
2969
2914
2970
void zoo_state::init_monkeyla ()
2915
2971
{
2916
- decrypt_rom (zoo_table );
2972
+ decrypt_rom (v102_px05_table );
2917
2973
#if 1
2918
2974
// TODO: There's more stuff happening for addresses < 0x400...
2919
2975
// override reset vector for now
@@ -2929,7 +2985,7 @@ void zoo_state::init_monkeyla()
2929
2985
2930
2986
void zoo_state::init_speedmst ()
2931
2987
{
2932
- decrypt_rom (zoo_table );
2988
+ decrypt_rom (v102_px05_table );
2933
2989
#if 1
2934
2990
// TODO: There's more stuff happening for addresses < 0x400...
2935
2991
// override reset vector for now
@@ -2943,7 +2999,7 @@ void zoo_state::init_speedmst()
2943
2999
2944
3000
void zoo_state::init_speedmsta ()
2945
3001
{
2946
- decrypt_rom (zoo_table );
3002
+ decrypt_rom (v102_px05_table );
2947
3003
#if 1
2948
3004
// TODO: There's more stuff happening for addresses < 0x400...
2949
3005
// override reset vector for now
@@ -2957,7 +3013,7 @@ void zoo_state::init_speedmsta()
2957
3013
2958
3014
void zoo_state::init_speedmstb ()
2959
3015
{
2960
- decrypt_rom (zoo_table );
3016
+ decrypt_rom (v102_px05_table );
2961
3017
#if 1
2962
3018
// TODO: There's more stuff happening for addresses < 0x400...
2963
3019
// override reset vector for now
@@ -2969,6 +3025,54 @@ void zoo_state::init_speedmstb()
2969
3025
#endif
2970
3026
}
2971
3027
3028
+ const zoo_state::decryption_info zoo_state::v102_px16_table = {
3029
+ {
3030
+ {
3031
+ { 11 , 10 , 9 },
3032
+ {
3033
+ { { 7 , 5 , 4 , 6 , 0 , 3 , 2 , 1 }, 0x00 },
3034
+ { { 1 , 4 , 6 , 0 , 2 , 5 , 3 , 7 }, 0xd0 },
3035
+ { { 1 , 7 , 4 , 3 , 6 , 5 , 0 , 2 }, 0x88 },
3036
+ { { 6 , 5 , 2 , 3 , 7 , 1 , 0 , 4 }, 0xd1 },
3037
+ { { 6 , 1 , 7 , 2 , 4 , 0 , 3 , 5 }, 0x64 },
3038
+ { { 1 , 7 , 2 , 6 , 5 , 4 , 3 , 0 }, 0x83 },
3039
+ { { 6 , 7 , 4 , 2 , 5 , 0 , 1 , 3 }, 0x81 },
3040
+ { { 7 , 5 , 1 , 0 , 2 , 4 , 6 , 3 }, 0xea },
3041
+ }
3042
+ },
3043
+ {
3044
+ { 12 , 10 , 8 },
3045
+ {
3046
+ { { 6 , 5 , 4 , 3 , 2 , 1 , 0 , 7 }, 0x90 },
3047
+ { { 2 , 4 , 0 , 7 , 5 , 6 , 3 , 1 }, 0x32 },
3048
+ { { 7 , 1 , 0 , 6 , 5 , 2 , 3 , 4 }, 0xa9 },
3049
+ { { 2 , 0 , 3 , 5 , 1 , 4 , 6 , 7 }, 0xa2 },
3050
+ { { 3 , 0 , 6 , 5 , 2 , 1 , 4 , 7 }, 0x02 },
3051
+ { { 0 , 1 , 6 , 4 , 5 , 2 , 7 , 3 }, 0x30 },
3052
+ { { 3 , 5 , 2 , 7 , 6 , 1 , 4 , 0 }, 0x0a },
3053
+ { { 0 , 6 , 4 , 2 , 7 , 3 , 1 , 5 }, 0x81 },
3054
+ }
3055
+ }
3056
+ },
3057
+ { 12 , 9 , 11 , 8 , 10 , 7 , 2 , 4 , 6 , 5 , 3 }
3058
+ };
3059
+
3060
+ void zoo_state::init_wwitch ()
3061
+ {
3062
+ decrypt_rom (v102_px16_table);
3063
+ #if 1
3064
+ // TODO: There's more stuff happening for addresses < 0x400...
3065
+ // override reset vector for now
3066
+ u16 * const rom = (u16 *)memregion (" maincpu" )->base ();
3067
+ rom[0x00004 /2 ] = 0x0000 ;
3068
+ rom[0x00006 /2 ] = 0x0446 ;
3069
+
3070
+ rom[0x00400 /2 ] = 0x4e75 ; // overlay!?
3071
+
3072
+ rom[0x01220 /2 ] = 0x4e75 ; // Mirror ROM word checksum (it expects 0)
3073
+ #endif
3074
+ }
3075
+
2972
3076
const astoneag_state::decryption_info astoneag_state::astoneag_table = {
2973
3077
{
2974
3078
{
@@ -3064,8 +3168,9 @@ GAMEL( 2004, magibombg, magibomb, magibombg, magibombg, zoo_state, init_m
3064
3168
GAMEL( 2004 , speedmst, 0 , speedmst, magibombg, zoo_state, init_speedmst, ROT0, " D2 Enterprises" , " Speed Master (Ver. V1.0, Apr 29 2004)" , MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_magibomb ) // Apr 29 2004 16:29:35
3065
3169
GAMEL( 2003 , speedmsta, speedmst, speedmst, magibombg, zoo_state, init_speedmsta, ROT0, " D2 Enterprises" , " Speed Master (Ver. V1.0, May 23 2003)" , MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_magibomb ) // May 23 2003 16:38:02
3066
3170
GAMEL( 2003 , speedmstb, speedmst, speedmst, magibombg, zoo_state, init_speedmstb, ROT0, " D2 Enterprises" , " Speed Master (Ver. V1.0, Apr 28 2004)" , MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING, layout_magibomb ) // Apr 28 2004 17:21:26
3067
- GAMEL( 2006 , cptshark, 0 , winbingo, winbingo, zoo_state, init_cptshark, ROT0, " Astro Corp. / American Alpha" , " Captain Shark (Ver. CS.01.6, Apr 21 2006)" , MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION, layout_winbingo ) // 13:50:11 Apr 21 2006
3171
+ GAMEL( 2006 , cptshark, 0 , winbingo, winbingo, zoo_state, init_cptshark, ROT0, " Astro Corp. / American Alpha" , " Captain Shark (Ver. CS.01.6, Apr 21 2006)" , MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING , layout_winbingo ) // 13:50:11 Apr 21 2006
3068
3172
GAMEL( 2006 , winbingo, 0 , winbingo, winbingo, zoo_state, init_winbingo, ROT0, " Astro Corp." , " Win Win Bingo (Ver. GM.03.3, Feb 23 2006)" , MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION, layout_winbingo ) // 15:47:48 Feb 23 2006
3069
3173
GAMEL( 2006 , winbingoa, winbingo, winbingo, winbingo, zoo_state, init_winbingoa, ROT0, " Astro Corp." , " Win Win Bingo (Ver. GM.05.1, May 11 2006)" , MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING, layout_winbingo ) // 11:02:07 May 11 2006. Undumped sprite ROMs
3070
3174
GAMEL( 2005 , hacher, winbingo, hacher, winbingo, zoo_state, init_hacher, ROT0, " bootleg (Gametron)" , " Hacher (hack of Win Win Bingo EN.01.6)" , MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_GRAPHICS, layout_winbingo ) // 14:25:46 Mar 10 2005. One bad sprite ROM
3071
3175
GAME ( 2007 ?, westvent, 0 , skilldrp, skilldrp, astrocorp_state, empty_init, ROT0, " Astro Corp." , " Western Venture (Ver. AA.02.D)" , MACHINE_SUPPORTS_SAVE | MACHINE_NOT_WORKING ) // One bad program ROM
3176
+ GAME ( 2005 ?, wwitch, 0 , wwitch, magibombd, zoo_state, init_wwitch, ROT0, " Astro Corp." , " Wicked Witch (Ver. AA.01.A)" , MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // 29/12/05 09:29
0 commit comments