找回密码
 立即注册
搜索
查看: 8470|回复: 28

[怀旧] 口袋妖怪源码泄露系列——火红,绿毛虫进化为裂空座

[复制链接]
发表于 2020-5-21 08:39 | 显示全部楼层 |阅读模式
这段时间任天堂的泄露实在是太劲爆了,口袋的1-3世代都没落下,据说今天初代绿的源码也要被放出来了。
火红叶绿Debug模式。当初IS的GBA SDK用的居然是gcc2.9来编译,而不是想象中的CodeWarrior之类。

Debug功能测试视频
https://www.bilibili.com/video/BV1Jt4y11768/

绿毛虫进化为裂空座:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

     
发表于 2020-5-21 08:43 | 显示全部楼层
回复

使用道具 举报

     
发表于 2020-5-21 08:44 来自手机 | 显示全部楼层
有金银吗,想看聪哥的部分
回复

使用道具 举报

 楼主| 发表于 2020-5-21 08:53 | 显示全部楼层
mjzs07 发表于 2020-5-21 08:44
有金银吗,想看聪哥的部分

金银里就看到一个压缩怪兽图像文件的工具是岩田聪写的。贴一点点吧
  1. /*
  2. *        ポケモングラフィックデータの圧縮・バンク詰めコンバータ
  3. *                Created by S.Iwata / HAL Laboragtory, Inc.
  4. */
  5. #include  <stdio.h>
  6. #include  <stdlib.h>

  7. typedef        unsigned char        BYTE;
  8. typedef        unsigned int        WORD;
  9. typedef unsigned long        DWORD;


  10. /* ファイルに1バイト出力 */
  11. void putByte(BYTE, FILE*);
  12. /* ファイルfpiの内容を圧縮してfpoに出力し圧縮後のサイズを返す */
  13. int vpack(FILE *fpi, FILE *fpo);
  14. /* 圧縮用データバッファ(データ出力に使用) */
  15. extern BYTE data[];

  16. /* データ種別定義 */
  17. typedef enum {
  18.   MonsFront = 0,        /* モンスター正面 */
  19.   MonsBack,                /* モンスター背面 */
  20.   UnknownFront,                /* アンノーン正面 */
  21.   UnknownBack,                /* アンノーン背面 */
  22.   Trainer                /* トレーナー */
  23. } DKind;

  24. /* データ断片 */
  25. typedef struct {
  26.   DKind        kind;                /* データ種別 */
  27.   int        idno;                /* データID(モンスター番号) */
  28.   int        bank;                /* バンク番号 */
  29.   long        bpoint;                /* バンク内のポインタ */
  30.   int        size;                /* この情報のサイズ */
  31. } BLOCKREC;
复制代码
  1. /*
  2. *        データ圧縮ユーティリティー
  3. *                Written by S.Iwata
  4. *                        on April,1989
  5. *                revised by M.Kanai
  6. *                        on Aug., 1989
  7. *                revised by T.Gunji
  8. *                        on May., 1994
  9. *                revised by S.Iwata
  10. *                        on September, 1996
  11. *                revised by S.Iwata
  12. *                        on September, 1998
  13. *
  14. */
  15. #include  <stdio.h>
  16. #include  <stdlib.h>

  17. typedef        unsigned char        BYTE;
  18. typedef        unsigned int        WORD;
  19. typedef unsigned long        DWORD;

  20. #define        TRUE        1
  21. #define        FALSE        0
  22. #define        FILENAMELENGTH        64                /* ファイル名用バッファの大きさ */
  23. #define        DATASIZELIMIT        65536                /* 扱えるデータの最大値 64KB */
  24. #define        EMPTY        (WORD)DATASIZELIMIT        /* ハッシュテーブル内で空きを示す */
  25. #define        HASHTABLESIZE        131111                /* 素数 524287 512KB */
  26.                                         /* (old-version 131111) */

  27. BYTE        data[DATASIZELIMIT + 1];        /* 圧縮データバッファ */
  28. BYTE        algorythm[DATASIZELIMIT];        /* 圧縮アルゴリズム */
  29. WORD        compLength[DATASIZELIMIT];        /* 圧縮対象データ長 */
  30. WORD        reference[DATASIZELIMIT];        /* 参照インデックス */
  31. WORD        originalSize = 0;                /* 圧縮前のデータ長 */
  32. WORD        packedSize = 0;                        /* 圧縮後のデータ長 */
  33. WORD        nrefHash[HASHTABLESIZE];
  34. WORD        vrefHash[HASHTABLESIZE];

  35. BYTE        invertTable[256];                /* 左右反転用テーブル */
  36. #define        Invert(n)        (invertTable[n]) /* 左右反転データを得る */


  37. #define NORMAL                (BYTE)0                /* 非圧縮通常データ */
  38. #define RUNLENGTH        (BYTE)1                /* 1データ連続 */
  39. #define RUNLENGTH2        (BYTE)2                /* 2データ交互連続 */
  40. #define INCRUNLEN        (BYTE)3                /* インクリメンタルデータ連続 */
  41. #define REFERENCE        (BYTE)4                /* 通常データ参照 */
  42. #define REFERLR                (BYTE)5                /* 左右反転データ参照 */
  43. #define REFERUD                (BYTE)6                /* 上下反転データ参照 */
  44. #define        SPECIAL                (BYTE)7                /* 特殊データ */
  45. #define        ENDMARK                (BYTE)0xff        /* データ終端 */
复制代码



回复

使用道具 举报

     
发表于 2020-5-21 09:50 | 显示全部楼层
原来这个进化只是自己改了源码重新编译的结果。。。
还以为GF真会玩系列
回复

使用道具 举报

头像被屏蔽
发表于 2020-5-21 10:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2020-5-21 10:30 来自手机 | 显示全部楼层
草,欢乐多,绿毛虫真的可以进化成裂空座了

—— 来自 HUAWEI SPN-AL00, Android 9上的 S1Next-鹅版 v2.2.2.1
回复

使用道具 举报

     
发表于 2020-5-21 10:33 | 显示全部楼层
回复

使用道具 举报

     
发表于 2020-5-21 10:39 | 显示全部楼层
初代的开发时长还真的是长
回复

使用道具 举报

     
发表于 2020-5-21 10:53 来自手机 | 显示全部楼层
有这个源码后,GBA上的改版能有什么新活?
回复

使用道具 举报

 楼主| 发表于 2020-5-21 10:57 来自手机 | 显示全部楼层
不可避免 发表于 2020-5-21 10:53
有这个源码后,GBA上的改版能有什么新活?

基本不会有,gba的rom都被人家反汇编个遍了。加新东西倒是可以,只不过一大堆数据文件要修改。
回复

使用道具 举报

     
发表于 2020-5-21 11:46 | 显示全部楼层
看看注释也是很有趣的..
回复

使用道具 举报

 楼主| 发表于 2020-5-21 12:25 | 显示全部楼层
woodcoin 发表于 2020-5-21 11:46
看看注释也是很有趣的..

反正觉得三世代很多代码就是把二世代的汇编给移植了。。
回复

使用道具 举报

     
发表于 2020-5-21 13:27 | 显示全部楼层
什么,裂空座真的是绿毛虫进化来的
回复

使用道具 举报

 楼主| 发表于 2020-5-21 16:22 来自手机 | 显示全部楼层
坛子漆黑 发表于 2020-5-21 13:27
什么,裂空座真的是绿毛虫进化来的

只是改了一下代码玩梗。不过至少这一世代的非法精灵判定不包括裂空座,进化了还能控制。
回复

使用道具 举报

发表于 2020-5-21 16:49 | 显示全部楼层
如何评价这些c的代码水平
回复

使用道具 举报

 楼主| 发表于 2020-5-21 18:45 来自手机 | 显示全部楼层
harry3 发表于 2020-5-21 16:49
如何评价这些c的代码水平

个人觉得其实还可以。就是很多源文件像是汇编直接改回来的
回复

使用道具 举报

发表于 2020-5-21 19:05 | 显示全部楼层
烈空座幼崽在路上了
回复

使用道具 举报

     
发表于 2020-5-21 20:14 来自手机 | 显示全部楼层
看到暴鲤龙飞天想起特别篇漫画里的飞天暴鲤龙
回复

使用道具 举报

     
发表于 2020-5-21 21:13 来自手机 | 显示全部楼层
这个跟以前那些改版有什么不一样吗

—— 来自 HUAWEI COR-AL00, Android 9上的 S1Next-鹅版 v2.2.2.1
回复

使用道具 举报

 楼主| 发表于 2020-5-21 22:54 | 显示全部楼层
Cylap 发表于 2020-5-21 21:13
这个跟以前那些改版有什么不一样吗

—— 来自 HUAWEI COR-AL00, Android 9上的 S1Next-鹅版 v2.2.2.1 ...

这不是改版,这是官方当年的源码泄露,我稍微修改了三行编译了一下。。
回复

使用道具 举报

     
发表于 2020-5-22 00:53 | 显示全部楼层
yksoft1 发表于 2020-5-21 08:53
金银里就看到一个压缩怪兽图像文件的工具是岩田聪写的。贴一点点吧

感谢,这段炸裂啊,没有这压缩,金银做出不来
回复

使用道具 举报

     
发表于 2020-5-22 02:08 | 显示全部楼层
这个源码能分享吗?
回复

使用道具 举报

 楼主| 发表于 2020-5-22 09:37 来自手机 | 显示全部楼层
mjzs07 发表于 2020-5-22 00:53
感谢,这段炸裂啊,没有这压缩,金银做出不来

金银的所有怪兽/训练师图像加起来在ROM里只占用224KB。
回复

使用道具 举报

 楼主| 发表于 2020-5-22 09:38 来自手机 | 显示全部楼层
黑星逆 发表于 2020-5-22 02:08
这个源码能分享吗?

这玩意4chan很容易找吧,找/ppg/。
不会fq下载的话,我可以打个包。。
回复

使用道具 举报

     
发表于 2020-5-22 23:18 | 显示全部楼层
yksoft1 发表于 2020-5-22 09:38
这玩意4chan很容易找吧,找/ppg/。
不会fq下载的话,我可以打个包。。

感谢指路,已经拿到了!
回复

使用道具 举报

 楼主| 发表于 2020-5-23 02:04 | 显示全部楼层
  1. //---------------------------------------------------------------------------------------------
  2. /**
  3. *        改造で作られたポケモンかどうかチェック
  4. *
  5. * @param        client_no        チェックするクライアント
  6. *
  7. * @return        1:不正ではない        0:不正
  8. *
  9. */
  10. //---------------------------------------------------------------------------------------------

  11. int        HuseiPokemonCheck(u8 client_no)
  12. {
  13.         int        ret;

  14.         //相手側のチェックは不要
  15.         if(MineEnemyCheck(client_no)==SIDE_ENEMY){
  16.                 return 1;
  17.         }
  18.         //デオキシス、ミュウ以外のチェックは不要
  19.         if(((PokeParaGet(&PokeParaMine[SelMonsNo[client_no]],ID_monsno,0))!=MONSNO_DEOKISISU)&&
  20.            ((PokeParaGet(&PokeParaMine[SelMonsNo[client_no]],ID_monsno,0))!=MONSNO_MYUU)){
  21.                 return 1;
  22.         }
  23.         ret=PokeParaGet(&PokeParaMine[SelMonsNo[client_no]],ID_event_get_flag,0);
  24.         return ret;
  25. }
复制代码

火叶里检查配信怪是否合法的代码。不过这两个配信怪本身都来自配信道具船票,那个可没有任何特殊检查。
回复

使用道具 举报

头像被屏蔽
     
发表于 2020-5-23 18:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 发表于 2020-5-23 21:21 | 显示全部楼层
黑星逆 发表于 2020-5-22 23:18
感谢指路,已经拿到了!

今晚珍钻的也泄露了。就是看makefile,估计依赖的开发工具链有点复杂。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-9-28 23:32 , Processed in 0.079028 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表