设为首页收藏本站
机战Z2破界篇 星组汉化 下载

星组游戏论坛

 找回密码
 注册(QQ注册+邀请注册)

QQ登录

只需一步,快速开始

查看: 1722|回复: 7

[原创] NO$GBA反汇编代码写入辅助软件(菜鸟级) [复制链接]

Rank: 12Rank: 12Rank: 12

UID
95345
星币
84
积分
60
阅读权限
90
注册时间
2012-12-14
最后登录
2013-8-17
发表于 2013-2-8 10:52:18 |显示全部楼层
原文链接:http://huowuliesp.blog.163.com/blog/static/14439087201318103831644/

这个程序用于将NO$GBA导出的代码文本写入ROM
方便汉化时修改程序
导出的代码文档请另存为UTF-8的格式
注:
1、不需要填写路径,程序会自动获取路径
2、请做好ROM的备份工作
3、本软件导入的代码文档是从NO$GBA导出的代码文档
ASMhackTool.zip (31.27 KB, 下载次数: 19)

目前版本V3.1
注:这个小软件是C#编的,要使用请先安装dotNetFx40_Full_x86_x64.exe,找这货请自行百度

Rank: 12Rank: 12Rank: 12

UID
95345
星币
84
积分
60
阅读权限
90
注册时间
2012-12-14
最后登录
2013-8-17
发表于 2013-2-8 10:54:26 |显示全部楼层
这楼是源代码,编译软件可以用SharpDevelop_4.2.2.8818_Setup.msi,开源的C#

/*
* 由SharpDevelop创建。
* 作者:青龍
* 日期:2013-2-6
* 时间:13:02
*
* 这个程序用于将NO$GBA导出的代码文本写入ROM
* 方便汉化时修改程序
* 导出的代码文档请另存为UTF-8的格式 
*/
using System;
using System.IO;

namespace ASMhackTool_GBA_
{
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("========================");
            Console.WriteLine("=这个软件用于将NO$GBA上更改的代码写到ROM里面 =");
            Console.WriteLine("=        TGB汉化工作室              =");
            Console.WriteLine("=      作者:青龍 日期: 2013-2-6     =");
            Console.WriteLine("========================");
            Console.WriteLine("");
            
            string autopath = Directory.GetCurrentDirectory();
            Console.WriteLine("获取路径成功:{0}",autopath);
            Console.WriteLine("");
            
            string ini_path = autopath +"\\"+"ASMhackTool.ini";
            FileStream ini = new FileStream(@ini_path,FileMode.Open,FileAccess.Read);
            StreamReader set_int = new StreamReader(ini);
            Console.WriteLine("读取软件配置成功:{0}",ini_path);
            Console.WriteLine("");
            
            string rom_name = set_int.ReadLine();
            rom_name = set_int.ReadLine();
            rom_name = autopath +"\\"+rom_name;
            Console.WriteLine("ROM路径+名称:{0}",rom_name);
            Console.WriteLine("");
            
            string txt_name = set_int.ReadLine();
            txt_name = set_int.ReadLine();
            txt_name = autopath +"\\"+ txt_name;
            Console.WriteLine("代码文档:{0}",txt_name);
            Console.WriteLine("");
            
            set_int.Close();
            ini.Close();
            
            if (!(File.Exists(@rom_name)))
            {
                Console.WriteLine("===告警:ROM文件不存在,请检查ini文件配置并确认rom文件是否存在!===");
                Console.WriteLine("Press any key to continue . . . ");
                Console.ReadKey(true);
                return;
            }
            
            if (!(File.Exists(@txt_name)))
            {
                Console.WriteLine("===告警:代码文档不存在,请检查ini文件配置并确认代码文档是否存在!===");
                Console.WriteLine("Press any key to continue . . . ");
                Console.ReadKey(true);
                return;
            }
            
            FileStream Rom = new FileStream(@rom_name,FileMode.Open,FileAccess.ReadWrite);
            BinaryWriter ARM_Rom =new BinaryWriter(Rom);
            
            FileStream txt = new FileStream(@txt_name,FileMode.Open,FileAccess.Read);
            StreamReader ARM_txt = new StreamReader(txt);
            
            string dz = "";
            
            dz = ARM_txt.ReadLine();//dz即“地址”之意
            Console.WriteLine("代码写入:");
            while (dz != null)
            {
                if (dz.Length>13)
                {
                    string xrdz = dz.Substring(0,8);//xrdz即“写入地址”之意
                    string cd = dz.Substring(13,4);//这个用于判断这行代码是双字节代码还是四字节代码
                    string su ="";//写入的代码
                    uint Rom_xrdz = 0;
                    ushort Rom_su16 = 0;//用ushort,是为了写入双字节的数据
                    
                    Rom_xrdz = (uint)Convert.ToInt32(xrdz,16);
                    Rom_xrdz = Rom_xrdz - 0x8000000;
                    //跟GBA内存寻址有关,在GBA中ROM地址映射到0x80 00 00 00开头的地址段
                    //写入时,要把这个映射段地址去掉
                    //详细说明请参考GBA的技术文档
                    Rom.Seek(Rom_xrdz,SeekOrigin.Begin);
                    
                    if (cd.CompareTo("    ")==0)
                    {
                        su = dz.Substring(9,4);
                        Rom_su16 = (ushort)Convert.ToInt16(su,16);
                        ARM_Rom.Write(Rom_su16);
                        //上面是写入双字节代码
                    }
                    else
                    {
                        su = dz.Substring(9,4);
                        Rom_su16 = (ushort)Convert.ToInt16(su,16);
                        ARM_Rom.Write(Rom_su16);
                        
                        Rom_xrdz = Rom_xrdz + 2;
                        Rom.Seek(Rom_xrdz,SeekOrigin.Begin);
                        
                        su = dz.Substring(13,4);
                        Rom_su16 = (ushort)Convert.ToInt16(su,16);
                        ARM_Rom.Write(Rom_su16);
                        //这部分是写入四字节长度的代码,如bl代码
                    }
                    Console.WriteLine("{0:X8}",Rom_xrdz);
                }
               
                dz = ARM_txt.ReadLine();
            }
            
            ARM_txt.Close();
            ARM_Rom.Close();
            txt.Close();
            Rom.Close();
            
            Console.WriteLine("Press any key to continue . . . ");
            Console.ReadKey(true);
        }
    }
}

Rank: 12Rank: 12Rank: 12

UID
95345
星币
84
积分
60
阅读权限
90
注册时间
2012-12-14
最后登录
2013-8-17
发表于 2013-2-8 11:00:59 |显示全部楼层
相关图片:



Rank: 7Rank: 7Rank: 7

UID
34667
星币
3629
积分
2589
阅读权限
70
注册时间
2009-3-9
最后登录
2017-11-22

STS-X-001 七芒星勋章

发表于 2013-2-8 16:43:29 |显示全部楼层

管理员

勇者

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

UID
4
星币
379
积分
5110
阅读权限
255
注册时间
2007-6-30
最后登录
2017-11-22
发表于 2013-2-9 09:43:46 |显示全部楼层
火哥威武~~
发帖际遇:绝世爱笑 乐于助人,奖励 3 星币. 幸运榜 / 衰神榜
星组游戏开发组 急招游戏画师美工~~~详见链接点我进入招募贴

Rank: 12Rank: 12Rank: 12

UID
95345
星币
84
积分
60
阅读权限
90
注册时间
2012-12-14
最后登录
2013-8-17
发表于 2013-2-10 13:18:03 |显示全部楼层
阿笑新年快乐~!

Rank: 3Rank: 3

UID
70132
星币
10
积分
175
阅读权限
30
注册时间
2011-5-1
最后登录
2017-4-14
发表于 2013-2-10 19:44:52 |显示全部楼层
大家新年快乐
黯淡的眼眸,血色的夕阳,刀剑的无尽荒原
谋求救赎是那么的奢侈
极力挽回是多么的可笑
触及如此的风景
她,胸怀万般不甘
他,发自内心的沉醉,迷恋
交织着数以亿千的思念,愿望
她,踏上征途,以身为剑,寻求

Rank: 1

UID
95681
星币
9
积分
6
阅读权限
10
注册时间
2012-12-29
最后登录
2017-4-29
发表于 2015-12-30 17:56:48 |显示全部楼层
这个外挂给力,谢谢楼主分享

Archiver|星组游戏论坛 ( 京公网安备110403080002 )  

GMT+8, 2017-11-22 15:17

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部