Forum » » OS4 toutes plateformes confondues » » WINUAE-PPC
Posté : 13-06-2016 14:16
OK je viens de consacrer une heure au sujet de la ram: même en faisant la cheksum ça marche pas...
Je cherche dans un des fichiers rom de la cyberstorm une valeur en 127 et 128 MO : on trouve cette valeur qu'à un seul endroit j'y ajoute 3*128 Mo soit environ 512 MO
J'ajuste la taille de la carte à 512 en éditant la config .uae
Peut être que je fais une erreur qque part ... mais difficile à voir ... source joint si qqun à une idée
lire le fichier cyberstorm.rom dans un buffer
faire HackROM(buffer,taillebuffer,127,128);
sauver le buffer dans un nouveau fichier .rom
Alain
/*====================================================== ====================*/
void HackROM(void *pt,LONG nb,ULONG min,ULONG max)
{
ULONG *pt32=pt;
ULONG n;
ULONG x0;
ULONG checksum;
NLOOP(nb/4)
{
x0=pt32[0];
if( x0< (max*1024*1024) )
if((min*1024*1024) < x0)
{
printf("[%ld] Valeur %ld dans l'intervalle [%ld à %ld MO] manque %ld bytes \n",n*4,x0,min,max,(max*1024*1024) - x0);
pt32[0]=x0+(3*128*1024*1024); /* around 128 + 3*128 = around 512 */
}
pt32=pt32+1;
}
/*
>>>Le checksum commence à $20.
>>>Et il se calcule de $24 avec une longueur de $13FF8
>>on y additionne chaque octets ? ou chaque ULONG ?
>Chaque .l !
*/
checksum=0;
pt32=pt;
pt32=pt32+((0x20)/4) ;
nb=((0x13FF8)/4);
NLOOP(nb)
checksum=chec ksum+pt32[n+1];
pt32[0]=checksum;
}
/*======================= ===================================================*/
Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=2167&forum=6