
    @fR	                          G d  d      Z y)c                   @    e Zd ZdZdZdZdZdZdZdZ	d Z
d	 Zd
 Zd Zy)Carti @     i                 c                     || _         t        | j                   d      5 }|j                         }d d d        d| _        | j	                         y # 1 sw Y   "xY w)NrbF)filepathopenreadwrite_enable	open_data)selfpathfraw_datas       #d:\Programming\nes 3\engine\cart.py__init__zCart.__init__   sO    DM	dmmT	" ah DNN8 s   AAc                    |d d | _         | j                   d d dk(  st        d      | j                   d   | _        | j                  t        j                  z  | _        | j                   d   | _        | j                  t        j                  z  | _        | j                   d   }| j                   d   }|dz	  |dz  z  | _	        d	|d
z  k7  | _
        d	|dz  k7  | _        d	|dz  k7  | _        d	|dz  k7  | _        | j                  rt        j                  n+| j                  rt        j                  nt        j                   | _        |dz	  dz  | _        | j$                  d	k7  r!t        dt'        | j$                        z         | j                  dz  | _        d| j(                  z  | _        | j*                  | j
                  z   | _        | j,                  | _        | j.                  | j                  z   | _        || j*                  | j,                   | _        | j
                  t        j4                  k(  r| j2                  | j2                  z   | _        || j.                  | j0                   | _        t9        | j2                        | _        t9        | j6                        | _        t;        d       t;        d| j                          y )N      s   NESzNot a valid iNES file            r      r   r      zUnsupported version 	   zrom loaded!zmapper: )
raw_header	Exceptionrom_bank_countr   ROM_BANK_SHIFTrom_sizevrom_bank_countVROM_BANK_SHIFT	vrom_sizemapperfour_screen	trainer_pbattery_ramv_mirroringMIRROR_4_SCREENMIRROR_VERTICALMIRROR_HORIZONTALscreen_mirroringversionstrtrainer_size	rom_startrom_end
vrom_startvrom_endprg_romROM_BANK_SIZEchr_rom	bytearrayprint)r   r   	control_1	control_2s       r   r   zCart.open_data   sG   smDO??2A*,-..//!,D''4+>+>>DM??1-D))T-A-AADN"I"Iq.9z#99DKI
22DI
22DNI
22DI
22D #..d"..d
 	 >J.DL||q	*@3t||CT*T UU!+D$+++DN>>DMM1DLllDOOOdnn4DMDNN4<<8DL}}***\\DLL0dlDOODMM:DLT\\*DLT\\*DL	-	HT[[M
"#    c                      | j                   |   S )N)r8   )r   addrs     r   read_prg_romzCart.read_prg_romL   s    <<r?   c                 j    | j                   r|| j                  |<   y t        dt        |      z          y )Nz;Attempted to write to read-only Cartridge PRG ROM address: )r   r8   r<   hex)r   rA   values      r   write_prg_romzCart.write_prg_romO   s,     dll4ICPTIUVr?   N)__name__
__module____qualname__r9   r#   VROM_BANK_SIZEr&   r/   r.   r-   r   r   rB   rF    r?   r   r   r      s<    -..///2$hWr?   r   N)r   rK   r?   r   <module>rL      s   RW RWr?   