](./images/smilies/eusa_wall.gif)

explorer escribió:El propio MAME, entrando en modo depuración, te puede sacar el desensamblado de la ROM y grabarlo a disco.
Código: Seleccionar todo
0000: 3A 00 40 ld a,($4000)
0003: FE 55 cp $55
0005: CA 01 40 jp z,$4001
0008: 3A 00 88 ld a,($8800)
000B: 31 00 88 ld sp,$8800
000E: C3 A3 02 jp $02A3
0011: FF rst $38
0012: FF rst $38
0013: FF rst $38
0014: FF rst $38
0015: FF rst $38
0016: FF rst $38
0017: FF rst $38
0018: 4F ld c,a
0019: 3A FE 83 ld a,($83FE)
001C: B7 or a
001D: C8 ret z
001E: E5 push hl
001F: 21 00 83 ld hl,$8300
0022: 34 inc (hl)
0023: 7E ld a,(hl)
0024: 6F ld l,a
0025: 71 ld (hl),c
0026: E1 pop hl
0027: C9 ret
etc
Código: Seleccionar todo
0066: F5 push af
0067: E5 push hl
0068: D5 push de
0069: C5 push bc
006A: DD E5 push ix
006C: FD E5 push iy
006E: 3A 00 88 ld a,($8800)
0071: AF xor a
0072: 32 08 B8 ld ($B808),a
0075: CD F0 2C call $2CF0
etc
Código: Seleccionar todo
map(0x0000, 0x3fff).rom();
map(0x8000, 0x87ff).ram();
map(0x8800, 0x8800).mirror(0x07ff).r("watchdog", FUNC(watchdog_timer_device::reset_r));
map(0xa800, 0xabff).mirror(0x0400).ram().w(FUNC(galaxian_state::galaxian_videoram_w)).share("videoram");
map(0xb000, 0xb0ff).mirror(0x0700).ram().w(FUNC(galaxian_state::galaxian_objram_w)).share("spriteram");
map(0xb808, 0xb808).mirror(0x07e3).w(FUNC(galaxian_state::irq_enable_w));
map(0xb80c, 0xb80c).mirror(0x07e3).w(FUNC(galaxian_state::galaxian_flip_screen_y_w));
map(0xb810, 0xb810).mirror(0x07e3).w(FUNC(galaxian_state::galaxian_flip_screen_x_w));
map(0xb818, 0xb818).mirror(0x07e3).w(FUNC(galaxian_state::coin_count_0_w)); /* IOPC7 */
map(0xb81c, 0xb81c).mirror(0x07e3).w(FUNC(galaxian_state::coin_count_1_w)); /* POUT1 */
map(0xc000, 0xffff).rw(FUNC(galaxian_state::frogger_ppi8255_r), FUNC(galaxian_state::frogger_ppi8255_w));
Código: Seleccionar todo
PORT_START("IN0")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY PORT_COCKTAIL
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* 1P shoot2 - unused */
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* 1P shoot1 - unused */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_START("IN1")
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) )
PORT_DIPSETTING( 0x00, "3" )
PORT_DIPSETTING( 0x01, "5" )
PORT_DIPSETTING( 0x02, "7" )
PORT_DIPSETTING( 0x03, "256 (Cheat)")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* 2P shoot2 - unused */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* 2P shoot1 - unused */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_COCKTAIL
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_COCKTAIL
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
PORT_START("IN2")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_COCKTAIL
PORT_DIPNAME( 0x06, 0x00, DEF_STR( Coinage ) )
PORT_DIPSETTING( 0x02, "A 2/1 B 2/1 C 2/1" )
PORT_DIPSETTING( 0x04, "A 2/1 B 1/3 C 2/1" )
PORT_DIPSETTING( 0x00, "A 1/1 B 1/1 C 1/1" )
PORT_DIPSETTING( 0x06, "A 1/1 B 1/6 C 1/1" )
PORT_DIPNAME( 0x08, 0x00, DEF_STR( Cabinet ) )
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
PORT_DIPSETTING( 0x08, DEF_STR( Cocktail ) )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_4WAY
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_4WAY
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN3") /* need for some PPI accesses */
PORT_BIT( 0xff, 0x00, IPT_UNUSED )
explorer escribió:Bueno, de hecho, es casi lo mejor: algunas ROM tienen medidas para evitar la copia. Muchas de esas medidas consisten en intercambiar líneas del bus de datos.
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados