» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

放SS/PS/N64官方开发文档,供大家讨论10年前主机作参考(增补N64)

MD游戏扩容和电池记录的相应修改方法
MD游戏的扩容非常简单,可以说只要直接在文件后面增加相应字节就可以,不过,必须注意到下面这些情况:

1,对于没电池记录的游戏,那么,游戏文件可以直接扩容到32MBit,也就是4M大小。这就是SEGA MD机的最大范围了,如果要超过32Bit,目前知道的游戏就只有街霸2,40Mbit容量,需要特殊芯片支持实现Bankswitch,相应IO是0xA130F1-0xA130FF。

其中,0xA130F3/F5/F7/F9/FB/FD/FF这7个IO分别控制机器寻址$80000/100000/180000/200000/280000/300000/380000,每块大小是0x80000。

2,对于有电池记录的游戏,由于模拟器只能模拟标准定义的电池记录,也就是在0x200001—0x203FFF。那么,对于容量大于16Mbit游戏来说,就会出现Rom和Sram地址重复问题,比如经典游戏梦幻之星4。这时侯也是用特殊芯片来进行Rom和Sram的切换操作,相应IO是0xA130F1。通过对该IO写入0或者1来切换地址。

至于头文件的数据相应修改,其实是无关紧要,因为不管是真实机器还是模拟器,都不会根据头文件就固定死文件


TOP

Dreamcast AV输出口数据

1 地
2 右声道
3 左声道
4 +12v
5 +5v
6 15kHz RGB(电视行频)接地有效
7 31kHz RGB(VGA行频)接地有效
8 场同步(接VGA)
9 行同步(接VGA)
10 复合同步
11 S 端子色度
12 S 端子亮度
13 复合视频
14 蓝色信号输出(用220uf电容)
15 绿色信号输出(用220uf电容)
16 红色信号输出(用220uf电容)



TOP

永盛世嘉卡软硬加密原理分析
The cartridge port pins are numbered A1-A32 and B1-B32, left-to-right, with
the A row toward the back of the Genesis and the B row toward the front.

The "i" and "o" labels describe whether a signal is an input and/or an output
to/from the Genesis.

Signals with an "o" are output from the Genesis to the cartridge.
Signals with an "i" are input to the Genesis from the cartridge.

Pin  Signal        Pin  Signal
--------------------------------------
A1  -  gnd        B1  - ?
A2  -  +5v        B2  i   !H_RESET
A3  o  a8          B3  -   ?
A4  o  a11        B4  o   a9
A5  o  a7          B5  o   a10
A6  o  a12        B6  o   a18
A7  o  a6          B7  o   a19
A8  o  a13       B8  o   a20
A9  o  a5         B9  o   a21
A10 o  a14      B10 o  a22
A11 o  a4        B11 o  a23
A12 o  a15      B12 o  VIDEO
A13 o  a3        B13 o  VSYNC
A14 o  a16      B14 o  HSYNC
A15 o  a2        B15 o  HS_CLK
A16 o  a17      B16 o  !C_OE
A17 o  a1        B17 o  !C_CE
A18 -  gnd       B18 o  !AS
A19 io  d7       B19 o  CLK
A20 io  d0       B20 i  !DTACK
A21 io d8        B21 o  ?
A22 io  d6       B22 io  d15
A23 io  d1       B23 io  d14
A24 io  d9       B24 io  d13
A25 io  d5       B25 io  d12
A26 io  d2       B26 o  !LO_MEM
A27 io  d10     B27 o  !RESET
A28 io  d4       B28 o  !LDSW
A29 io  d3       B29 o  !UDSW
A30 io  d11     B30 i  !S_RESET
A31 -  +5        B31 o  ?
A32 -  gnd      B32 i  !CART_IN

关于对永盛软硬加密的模拟:

目前大家都知道世嘉卡带关于寻址只有a1~23,也就是寻址范围是0~3FFFFF。而加密也就是通过一个逻辑芯片来对某些脚进行屏蔽。

如果对01040004/01010004写入00C00004,那么激活加密机制,也就是以后读取地址需要进行处理(屏蔽a9,也就是B4脚),比如,读取$306的数据相当于读取$206的数据。
如果对01040000/01010000写入01040001/01010001,那么就关闭加密芯片

为什么是01040004这样地址来进行触发加密,这就直接跟加密芯片设计有关系。比如,超级大战略和亚瑟传说等是用地址400006对应芯片数据来判断等的。

对于0104(0101也一样)的加密软件设计,基本模块如下:
ROM:000DC000                 move    sr,-(sp)
ROM:000DC002                 move    #$2700,sr
ROM:000DC006                 move.l  #$C00004,d0
ROM:000DC00C                 moveq   #7,d1
ROM:000DC00E                 move.l  #$104,d2
ROM:000DC014                 and.l   d0,d1
ROM:000DC016                 swap    d2
ROM:000DC018                 or.l    d2,d1
ROM:000DC01A                 movea.l d1,a0
ROM:000DC01C                 move.l  d0,(a0)+                   $01040004=00C00004(激活硬加密)
ROM:000DC01E                 move.b  (unk_DB12E).l,d3   实际上是读取DB02E地址的数据
ROM:000DC024                 movea.l d2,a0
ROM:000DC026                 addq.l  #1,d2
ROM:000DC028                 move.l  d2,(a0)+                    $01040000=01040001(关闭硬加密)
ROM:000DC02A                 move    (sp)+,sr
ROM:000DC02C                 cmp.b   #$4F,d3 ;                判断是否有硬件加密芯片支持

加密卡带分析如下:
(104)太阁立志传、皇帝财宝;(101)皇室血裔、时空异变、古代封印

以上分析是根据目前这些卡的程序设计分析出来的,硬件加密芯片不懂研究,所以不敢担保一定正确。但,只要模拟器里面能支持这种加密功能,目前这些DUMP的卡带都可以直接完美模拟了。


TOP

土星手制引脚数据
引脚 名称     注释
1    GND
2    d2        data2
3    d3        data3
4    Vcc(5V)power
5    s1        page address1
6    s0        page address0
7    d0        data0
8    d1        data1
9    Vcc(5V)power
 
通讯格式(按键输出低电平)
Input Output
s0 s1  d3    d2   d1   d0
0   0   R      X    Y    Z
0   1   Start A    C    B
1   0   Right Left Down Up
1   1   L      1    0    0


PS手柄插头引脚:
      面向插针
      -------------------------------
      | o  o  o | o  o  o | o  o  o |
      \_____________________________/   
        1  2  3   4  5  6   7  8  9
 
PIN  信号名     方向    注释
---------------------------------------------------
1    DATA       IN      从手柄到主机的数据信号
2    COMMAND OUT   从主机到手柄的命令信号
3    +9V         --      来自主机CDROM驱动的+9V电源
4    GND         --      电源的地线
5    VCC         --      来自主机系统的+3.6V电源
6    SELECT    OUT    从主机给手柄的选择信号
7    CLOCK     OUT    从主机到手柄的时钟信号
8    N/C         --       未定义空脚
9    ACK         IN      从手柄到主机的应答信号
--------------------------------------------------
注1):方向以PS主机为基准。
注2):3脚电源主要给震动手柄马达用,一般手柄并没使用。

TOP

SS的架构非常难以发挥,基本上另一个CPU长期处于空闲状态。

而要同时驱动两个CPU工作,内存与外围IO的冲突与握手会浪费大量的机器时间在WAIT,由此,SS的硬件设计是失败的,用双CPU应该用dual port RAM才是。否则只能是轮流而不能并行运算。这本身就是硬件资源的极大浪费。

TOP

引用:
原帖由 hourousha 于 2009-6-22 20:57 发表

一方面SS没有GTE这种专用矢量运算处理器,因此即使slave SH2发挥到头,处理3D变换的速度也还是不如PS(SISD和SIMD怎么比速度),此外,SS的Texture Unit(或者叫做sprite mapping unit或类似的东西更合适)其实和通常 ...
当时的软件技术没有达到这个层次,在今天,同样是2D ENGINE,却可以使用矢量技术,也就是类似FLASH的2D矢量变形实现模拟3D的效果而没有POLYGON运算的积木颗粒感。

SS的半透明,用的是2D的alpha blending,也就是 buffer里面的实现或运算(实际上这个用硬件完成的或运算)。是前景与背景的叠加。

PS的半透明,实际上是光源特效。

TOP

引用:
原帖由 hourousha 于 2009-6-23 12:23 发表

光源特效?半透明?你搞混了两个概念。也就是fragment operation和framebuffer operation的区别。
你见过不是framebuffer操作的半透明效果吗?它都是在primitive(SS上称为part)写入frame buffer时的操作,无非就 ...
2D engine中,静态半透明叠加,是用frame buffer,动态半透明,是sprite buffer中定义某色为透明色(当然透明的深度还可以分阶)。这个目前在2D游戏或者MMI制作的时候都可以看到。实际上,除非大面积用硬件处理处理 frame叠加,小的活动块都是用软件来实现。因此,SS的特色就是大面积静态透明层(如静止的窗纱,玻璃,雾气)可以简单做到,而动态活动块透明(如运动的火焰,波动气流,呼出的热气)则比较难做,只能用软件合成,如果像素面积大的话CPU资源占用太大。

PS则完全是用3D的处理,光源运算(shading model)就可以了,已经没有sprite buffer了。

形象地描述,2D效果就是一个一个点(BMP)描出来,3D是统一后期渲染,3D要简单地多

[ 本帖最后由 aquasnake 于 2009-6-23 15:17 编辑 ]

TOP

发新话题
     
官方公众号及微博