Posts by 星夜之幻

    恕我直言,交流学习修改是好事,但是直接求成果则不一定是。

    更何况你的要求实在令人琢磨不透。你需要非中文版的pm黄的个体值为10,然而如果是需要强劲个体的话,你应该更改个体值为15才对,10的个体值的pm能实现闪光,但是在黄本体并没有这个效果,不禁令人怀疑你这是在利用hack ROM量产闪光的gb标志pm,通过vc传送到银行,来做一些不算太好的事情。

    mbc5支持128k sram是挺正常的,但是实时时钟只有mbc3有,mbc3标配上限只有32k,亲儿子一样的水晶才给配了64k(所以64k的标号还在128k后面,水晶的主控实际上应该叫mbc30),不知道这里edgb怎么处理。


    至于没启用vblank的也不是没有,我看炮灰运行时就没进vblank中断(虽然有中断程序),全程询问io,硬推数据来实现那样的画面效果。

    白纸一张,那就从内存关系学起,然后上z80吧,具体的接口关系可以延后学习,先看神奇误差大大的两篇吧。

    在我研究水晶的时候发现,PM在遇怪的时候,好像只显示努力在WRAM中,至于个体值的写入是在捕捉PM之后写入,在我印象中呢是全写00。

    至于口袋黄的话应该也是差不多这样子。大概。

    这样不就没有意义了吗,个体值之后没有更动的办法吧?

    实际上

    两个 call 7027 就是生成随机数的调用,可以直接删去,然后设置成固定值。

    也就是说,6CB2-6CBB 都可以用 nop填充, 然后在6CB2填入指令

    ld a, 固定个体值数值1

    ld b, 固定个体值数值2


    至于个体值的话,相当于一些小加成,能够额外增加PM的能力一些。


    计算偏移地址的工具,我以前也用GTK写过几个,现在也不用了。

    如果是相对地址,在bgb中使用 BANK号:地址 的方式调用,比如 5:4025

    如果是绝对地址 可以用 ROM:绝对地址 比如 ROM:2354D

    修改在bgb里面直接做 然后用调试功能保存就好了,也不必从相对地址算绝对地址然后去HEX编辑器改……


    那这样的话,直接把wEnemyMonDVs改成固定值就行了?


    话说个体值是个双字节?它的定义是?

    个体值 代表初代四种能力的个体 每个能力的范围是0-15,也就是说4位代表一种能力,四种能力就是两个字节。

    在项目 pokeyellow ,文件/engine/battle/core.asm中,

    程序LoadEnemyMonData用于装入PM数据。

    备注“; random DVs for wild mon”开始的位置,就是装入野生PM的个体值的代码。

    程序执行了两次随机获得一组随机个体值(位于a和b寄存器),可以通过修改代码使其装入固定值。

    对于美版来说,这个位置在0F:6CB2。对于日版来说,应该也在这附近。

    不像GB有个文件头,FC的数据中没有官方定义的文件头,所以会有多种方式来定义文件头,但是文件头并不是数据的一部分,理论上没有也能模拟。
    比较常见的nes后缀的ROM,一般用的是iNES文件头,由于历史原因,这个就是最通用和广泛的文件头(同时毛病也多得去了……)。


    如果是第三方开发商,那就没什么好说的了。
    第三方自己做FC游戏的类VC(比如FC版热血在GBA上的“VC”),其实完全可以认为官方自己去网络上下载了带iNES文件头的完整数据,然后找了个提供GBA上FC模拟器方案的开发商把游戏套上,然后就可以发卖了,你甚至可以手动替换GBA ROM里面的FC ROM数据来模拟其他游戏,甚至不同Mapper的也能模拟出来(比如Mapper4的热血,替换成Mapper21的魂斗罗一样能模拟成功)。


    但是任天堂明显不能这么做啊,在此之前老任搞FC的模拟,那完全是自成一套,ROM中只带有数据,不会在里面再加上文件头这样的东西,而且那个时候老任也很喜欢做修BUG和修辣鸡文本的活,最终的ROM还不一定和原版一样。
    直到上次看有人拆FC REMIX的包,从里面提取出对应的FC ROM数据文件,我用十六进制编辑器打开一看
    老任自家文件头长度是30h还是40h,把前面部分删掉剩下最后10h,然后修改其中一位,剩下的完全就和iNES文件头一个样了……
    理论上有没有源码都无所谓,只要有卡带存留,官方自己DUMP一下就好,但是连文件头都有民间方案的影子,那就真是令人怀疑老任会不会也是自己从网络下ROM……

    我觉得这个机器的模拟器本身并不会有多强……毕竟只要适配好那对应的30个游戏就万事大吉。
    主要是这两年任天堂也真是有够好笑,把民间设计的iNES文件头稍加改动就拿来给自己用了。

    如果真的开启Debugger的所有报警,这个游戏简直是群魔乱舞……
    汉字程序似乎一直在尝试读取DE54和DE49这个开机没初始化的地址的值,其中DE49如果写入了01,程序甚至就崩溃了……
    还有些程序不知道怎么想的,去内存的镜像区(E000-FDFF)进行读写
    甚至还有一些写入目标为DE或者HL地址的指令,不知道发了什么疯,执行时DE或HL的数值指向MBC端口……
     ?(