接上篇,怪物农场2修改日志2 - 奇妙能力歌

bgm是神秘妹纸唱的超好听的年轮

上篇中,我们顺利找到了"已收集怪物Id"这个列表.

接下来该做什么呢?

根据上篇的推理,当玩家生成新的怪物时,游戏程序会更新这个列表,加上新的怪物的id.

我们可以设置内存断点,在生成新怪物的时机中断,然后反推出生成怪物的数据(主要是id)来自何处.

我们读取没有生成169号クリック小朋友时的游戏记录,查看9703C,也就是"已收集怪物Id"列表.

可以看到,0x97151(278号的モッチー,0x9703C+278-1)为1,已经收集.

而0x970E4(169号的クリック小朋友,0x9703C+169-1)处为0,还未收集.

我们在0x970E4处下一个内存断点,然后从神殿生成クリック小朋友,看会不会触发断点.

在成功生成怪物后,给怪物取完名字,发现断点被触发了.因此是在生成怪物后,并且玩家确定要领养该怪物,并且给怪物取完名字,才会将该id添加到"已收集怪物Id"列表.

之前错误的认为,在生成怪物的时候,游戏程序便会去更新这个列表,现在看来是在生成怪物之后,游戏程序才会去更新该列表.

我们的确可以从这个时间点,反推出怪物id是从哪里得到的,但是路途似乎比较长了,难度似乎也很大.

再重新思考下游戏的处理过程.

1,从CDROM中读取数据.

2,根据数据计算出要生成的怪物的ID,以及其他初始数据.

3,如果怪物的生成条件不满足,则提示玩家该怪物还无法生成.

4,播放生成怪物的动画.

5,确认玩家是否要收养怪物,如果确定,将怪物ID添加到"已收集怪物Id"列表.

从步骤3可以知道,在生成怪物前,需要先查询指定id的怪物是否满足生成条件(实际是查询该种族的怪物是否能生成,而不是id,但是或许有办法通过怪物id找到怪物种族).

根据自己之前的资料,猜测怪物是否允许生成的条件也是存成一个数组(类似"已收集怪物Id"列表),且是按种族来存储的数组.
我们可以根据这些信息进行搜索.
1号种族 ピクシー 初期可再生,所以应该是01
2号种族ドラゴン 初期不可再生,所以应该是00
3ケンタウロス 初期不可再生,所以应该是00
4号 初期可再生 01
5 6 7 8号种族 初期都不能再生,因此是 00 00 00 00
一共有38个种族,根据初期是否可再生,在Snapshot文件中搜索如下字节系列.
01 00 00 01 00 00 00 00 00 01
Bingo! 在内存中确实能找到该字节序列.

得到内存中的地址应为 0x975e6-0x2B0 = 0x97336

我们用初期无法生成的三色鸟来验证该"种族允许生成"列表是否正确.
默认三色鸟初期是不能再生的,必须完成收集果冻贴纸相关事件后才能再生.
33ダックン 种族id是33.
那么地址是0x97336 + 33-1 = 0x97356
将0x97356处的内存修改为1,进入神殿,成功生成了三色鸟.
顺便找了下怪物农场2的金手指,发现9703C和97336这两个地址,其他人已经有找到了,不过没有关系,现在离目标更近一步了.
以下是我修改过的金手指,增加了#Unlock All Species部分.虽然比较丑,但是修改后可以生成所有种族的怪物了.
#Money Max
80096F6C E0FF
80096F6E 05F5
#Combat playerr Infinite Energy
801FFCDC 03E7
#Combat player Guts Infinite
801FFCFC 00FF
#Combat enemy energy 0
801FFC5C 0000
#Combat enemy energy 0 R2 + SELECT
D009185E 0102
801FFC5C 0000
#Enemy Guts Zero  R2 + SELECT
D009185E 0102
801FFC7C 0000
#All Monster Cards
50009802 0000
8009703C 0101
#All Emblem S
80097010 0001
80097014 0001
80097018 0001
8009701C 0001
80097020 0001
#Alway's Rank S
30095B42 0005
#Max Status
800959D0 03E7
800959D2 03E7
800959D4 03E7
800959D6 03E7
800959D8 03E7
800959DA 03E7
800959E0 03E7
800959E8 03E7
#Max Loyalty
300959EC 00C8
300959ED 00C8
#Unlock All Species
80097336 0101
80097338 0101
8009733A 0101
8009733C 0101
8009733E 0101
80097340 0101
80097342 0101
80097344 0101
80097346 0101
80097348 0101
8009734A 0101
8009734C 0101
8009734E 0101
80097350 0101
80097352 0101
80097354 0101
80097356 0101
80097358 0101
8009735A 0101

To be continued...

转载于:https://www.cnblogs.com/unigauldoth/p/5471064.html

怪物农场2修改日志3 - 年轮相关推荐

  1. 怪物农场2修改日志1 - FirstBlood

    最近有朋友分享了安卓上的playstation模拟器,我又开始玩起ps上的怪物农场2.这是一个怪物养成类游戏,玩家要养育,训练怪物,并参加比赛. 游戏制作公司是Tecmo,游戏中怪物的模型贴图等非常优 ...

  2. Spring Boot 2动态修改日志级别

    本文基于:Spring Boot 2.1.3,理论支持Spring Boot 2.x所有版本. 作为程序猿,定位问题是我们的日常工作,而日志是我们定位问题非常重要的依据.传统方式定位问题时,往往是如下 ...

  3. log4j2动态修改日志级别及拓展性使用

    一.供参考的完整日志配置 <?xml version="1.0" encoding="UTF-8"?><!-- 配置LoggerConfig, ...

  4. 使用RestTemplate模版实现 Rest 服务调用、Swagger 集成、动态修改日志级别

    Spring 与 Restful 整合才是微架构的核心,虽然在整个 SpringBoot(SpringCloud)之中提供有大量的 服务方便整合,但是这些 整合都不如 Rest 重要,因为 Rest ...

  5. java日志——修改日志管理器配置+日志本地化

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java日志--修改日志管理器配置+日志本地化 的相关知识: [1]修改日志管理器配置 1.1 ...

  6. 日志级别_SpringBoot实战(十三):Admin动态修改日志级别

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 之前关于线上输出日志一直有个困惑:如何可以动态调整的日志级别,来保证系统在正常运行时性 ...

  7. 求你了,别再随便打日志了,教你动态修改日志级别!

    GitHub 19k Star 的Java工程师成神之路,不来了解一下吗! 之前写过一篇文章<明明有自动清理,日志还是把我的服务干爆了!>,介绍过一次大促故障,是因为日志量激增,导致服务器 ...

  8. springboot 日志级别_SpringBoot实战(十三):Admin动态修改日志级别

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 之前关于线上输出日志一直有个困惑:如何可以动态调整的日志级别,来保证系统在正常运行时性 ...

  9. Spring Boot动态修改日志级别

    1. pom中引入 org.springframework.boot       spring-boot-starter-actuator 2. 发送POST请求: 地址: http://[服务地址] ...

最新文章

  1. c语言 strlower 将所有的字母转化为小写字母
  2. Java程序员从笨鸟到菜鸟之(二十八)Javascript总结之语言基础
  3. quercus mysql_14.5 Quercus 原理及展望
  4. C# 调用C++写的dll的实现方法
  5. 在C#代码中应用Log4Net系列教程(附源代码)
  6. 模拟BS服务器代码实现
  7. mysql 1045 - Access denied for user 'root'@'*.*.*.*' (using password YES)
  8. 041——VUE中组件之pros数据的多种验证机制实例详解
  9. 免费正版 Win 10/8/7操作系统虚拟机镜像下载
  10. 群晖系统,部署JAVA-JAR包,SpringBoot项目,手工启动
  11. Java小白-9.Java多线程
  12. 在ArcGIS中创建Python工具或者pyt工具箱
  13. Activity类的7个生命周期方法
  14. led灯光衰怎么解决_LED灯具怎么解决光衰问题?
  15. 云计算成朝阳产业,未来发展已成趋势
  16. 《最强大脑:魔方墙找茬王郑才千的学神秘笈-郑才千》-读书笔记
  17. ChatGPT惨遭围剿?多国封杀、近万人联名抵制……
  18. chrome插件- Vue Devtools not detected vue.js
  19. Log4j日志级别及使用规范
  20. 一张RSCU堆积图的改动

热门文章

  1. 发光二极管的keil代码c语言,用Keil点亮一个发光二极管
  2. 大学计算机专业游戏本推荐,选这几款就对了!大学生笔记本电脑盘点推荐
  3. “吃货联盟定餐系统”
  4. 2021级-JAVA02 基础语法1--标识符、常量与变量、数据类型、运算符与表达式209 天
  5. 一篇来自程序员的日记
  6. 通信2M接口基本知识点简介
  7. java 指定垃g1圾收集_java垃圾回收G1收集器
  8. 很好的英文资料书籍下载网站
  9. 本地宝js爬虫(附代码)
  10. springboot的精髓