英雄坛说吧 关注:23,656贴子:187,818

黄金英雄坛说原版地图

只看楼主收藏回复

首先特别感谢绝爱仙剑宝宝,反汇编源码及说明都非常详尽。
最近闲来想把黄金的全部地图给导出来,于是参照绝爱仙剑宝宝的反汇编源码及说明去挊,可搞出来的地图仅有几张正确,其余虽然有很多都能对上,但总有部分位置不同。。
于是读代码发现,仙剑宝宝的提取地图方法适用于最原始的GMUD之英雄坛说(标牌仍会有错误),而黄金增加了地图及大量NPC,而地图数据中不仅包含地图图片信息,还含有部分事件信息,因此要进行修正
在Part1部分
539C : CPY #$00 ;与Y比较,(Y>=MEM,c=1)(Y<MEM,C=0,N=1)(Y==MEM,Z=0)
539E : BEQ $53A6 ;Z=1则转移,否则继续
53A0 : CPY #$09 ;与Y比较,(Y>=MEM,c=1)(Y<MEM,C=0,N=1)(Y==MEM,Z=0)
53A2 : BEQ $53BF ;Z=1则转移,否则继续
53A4 : BNE $53C1 ;Z=0则转移,否则继续
53A6 : CMP #$08 ;与A比较,(A>=MEM,c=1)(A<MEM,C=0,N=1)(A==MEM,Z=1)
53A8 : BNE $53B3 ;Z=0则转移,否则继续
53AA : LDA $3185 ;->A
53AD : ASL ;算术左移
53AE : ASL ;算术左移
53AF : ASL ;算术左移
53B0 : JMP $53C1 ;
53B3 : LDA $2E9B ;->A ImageID
53B6 : ASL ;算术左移
53B7 : ASL ;算术左移
53B8 : ASL ;算术左移 *8
53B9 : CLC ;清进位标志
53BA : ADC $75 ;与(A+标志C)相加,结果送A
53BC : JMP $53C1 ;
53BF : LDA #$00 ;->A
53C1 : INT $3118 ;page2 AAF2
53C4 : STA $80 ;A->MEM
53C6 : LDA #$00 ;->A
53C8 : STA $81 ;A->MEM
539C中比较的Y为地图元素的类型,类型00与主角行走图相关;类型09(地名标牌),会把A(图片ID)改为0。
在经过初步的处理再去INT $3118(Part2 AAF2行开始)
AAF2 : BIT $3445 ;A∧($n2n1)
AAF5 : BPL $AAFB ;N=0则转移,否则继续
AAF7 : INT $3110 ;
AAFA : RTS ;子程序返回
AAFB : STA $83 ;A->MEM
AAFD : TYA ;Y->A
AAFE : PHA ;累加器进栈
AAFF : CPY #$0B ;与Y比较,(Y>=MEM,c=1)(Y<MEM,C=0,N=1)(Y==MEM,Z=0)
AB01 : BEQ $AB20 ;Z=1则转移,否则继续
AB03 : CPY #$0A ;与Y比较,(Y>=MEM,c=1)(Y<MEM,C=0,N=1)(Y==MEM,Z=0)
AB05 : BEQ $AB20 ;Z=1则转移,否则继续
AB07 : CPY #$06 ;与Y比较,(Y>=MEM,c=1)(Y<MEM,C=0,N=1)(Y==MEM,Z=0)
AB09 : BEQ $AB35 ;Z=1则转移,否则继续
AB0B : CPY #$02 ;与Y比较,(Y>=MEM,c=1)(Y<MEM,C=0,N=1)(Y==MEM,Z=0)
AB0D : BEQ $AB4A ;Z=1则转移,否则继续
AB0F : CPY #$03 ;与Y比较,(Y>=MEM,c=1)(Y<MEM,C=0,N=1)(Y==MEM,Z=0)
AB11 : BEQ $AB5F ;Z=1则转移,否则继续
AB13 : CPY #$04 ;与Y比较,(Y>=MEM,c=1)(Y<MEM,C=0,N=1)(Y==MEM,Z=0)
AB15 : BEQ $AB82 ;Z=1则转移,否则继续
AB17 : CPY #$05 ;与Y比较,(Y>=MEM,c=1)(Y<MEM,C=0,N=1)(Y==MEM,Z=0)
AB19 : BEQ $AB97 ;Z=1则转移,否则继续
AB1B : PLA ;A出栈
AB1C : TAY ;A->Y
AB1D : LDA $83 ;->A
AB1F : RTS ;子程序返回
AB20 : LDA $83 ;->A
AB22 : CMP #$07 ;与A比较,(A>=MEM,c=1)(A<MEM,C=0,N=1)(A==MEM,Z=1)
AB24 : BCC $AB1B ;进位标志C=0则转移,否则继续
AB26 : LDA #$73 ;->A
AB28 : STA $80 ;A->MEM
AB2A : LDA #$B1 ;->A
AB2C : STA $81 ;A->MEM B173 07010801
AB2E : LDA #$04 ;->A
AB30 : STA $82 ;A->MEM
AB32 : JMP $ABAF ;
这边开始会替换部分02,03,04,05,06,0A,0B中的图片,JMP $ABAF查表替换,$80$81为查表的起始地址,$82为查表的长度,$83是暂存的图片ID,用来比对,这其中主要替换了箭头房屋及黄金新增的NPC(黄金NPC图片ID已经超过了人物图片ID最大值)的图片。经过替换后最终再得到真正的地图。


IP属地:江苏1楼2023-02-17 14:43回复
    下面上地图,可能提取的代码有bug,若有与原版不一致的地方,欢迎提出










    IP属地:江苏2楼2023-02-17 14:45
    收起回复











      IP属地:江苏3楼2023-02-17 14:46
      回复










        游戏中房间的框都是画上去的,因而房间地图导出的都没框


        IP属地:江苏4楼2023-02-17 14:47
        回复











          IP属地:江苏5楼2023-02-17 14:47
          回复











            IP属地:江苏6楼2023-02-17 14:48
            回复











              IP属地:江苏7楼2023-02-17 14:48
              回复











                IP属地:江苏8楼2023-02-17 14:49
                回复











                  IP属地:江苏9楼2023-02-17 14:50
                  回复











                    IP属地:江苏10楼2023-02-17 14:50
                    回复









                      IP属地:江苏11楼2023-02-17 14:51
                      回复
                        十年前,我玩的是白金版的。


                        IP属地:安徽来自Android客户端12楼2023-02-18 04:59
                        回复
                          大佬


                          IP属地:北京来自Android客户端13楼2023-02-18 07:35
                          回复
                            发现有几张重复的,去掉就好,这几个原版数据是空的,提取时没有跳过,也没有清除上一张的数据。。


                            IP属地:江苏来自Android客户端14楼2023-02-18 08:33
                            回复
                              我最不喜欢这种帖子了,最好给我多来点


                              IP属地:广东来自iPhone客户端15楼2023-02-20 13:22
                              收起回复