找回密码
 注册

QQ登录

只需一步,快速开始

楼主: n805

SNK.Neo-Geo机皇主机诞生发展史

  [复制链接]
 楼主| 发表于 2025-7-10 15:51:50 | 显示全部楼层
本帖最后由 n805 于 2025-7-10 22:30 编辑
9 G0 m: v8 G3 x. F8 W$ s9 d+ S* T4 H7 _& y: _5 ]
$ d; W6 `% A- u2 @
复杂的 I/O 处理
6 I2 Y' T& i; w5 ~
来介绍 68000 的一项之前未曾提及的高级功能:向量化中断表。 早期的 CPU 如 6502 和 Z80 在处理 I/O 通信方面有着受限的设计。 每当外部设备需要 CPU 的关注时,它必须发送一个中断请求,而 CPU 则需要运行软件例程来处理这个请求。 在请求过程中传递的信息非常有限,这意味着 CPU 需要额外的周期来确定是谁触发了中断以及为什么中断 CPU。公平地说,像 Z80 这样的 CPU 提供了额外的电路来允许外围设备告诉 CPU 下一步执行哪条指令。 然而,这种方法并未被广泛采用。68000 改进了这项技术,将中断视为异常处理。 当外围设备中断 CPU时,它们需要自我标识。 然后,CPU 使用这个标识符组成一个内存地址,该地址指向一个定制的软件例程。 总的来说,这使得程序员能够高效地处理 I/O 通信,因为他们现在可以在一个名为自动向量表的内存区域中编目他们专用的中断处理程序,而 CPU 将自动执行每个处理程序。Neo Geo 利用了这种设计,并增加了一个名为 NEO-E0 的控制器芯片。 基本上,Neo Geo 的操作系统和游戏都会实现一个专用的异常表,这是因为操作系统的表侧重于硬件接口,而游戏的表则在正常执行期间使用。 然而,68000 只能意识到一个表。 因此,NEO-E0 提供了自动的存储器区段切换功能(bank switching),确保 68000 始终可以从正确的表中读取数据
- v7 a8 t" F' r( b

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2025-7-10 18:52:36 | 显示全部楼层
进程间通信
! M# a- g) D3 z% P4 K* d7 v5 }+ t
. K2 J% Q- L3 y; ]; W
在具有双处理器架构的系统中,两个 CPU 必须有一种方式进行通信。 在这个游戏机中,SNK 通过使用I/O 仲裁器 芯片实现了进程间通信(IPC)。 该仲裁器暴露了一个单一的 8 位寄存器,68000 可以写入此寄存器 。& A+ @* x# f0 Q* N

2 r* o. T6 Z, g3 s
68000和Z80之间的IPC通道表示。

8 `- B' e3 u7 @& D一旦寄存器被更新,仲裁器会向 Z80 发送一个不可屏蔽中断。 之后,Z80 可以读取该值(映射到一个端口),并据此做出反应。 这包括将数据写回到该寄存器,以便 68000 能够接收到新的数据。 但是,出于某种原因,68000 不会被中断(因此它需要进行某种形式的轮询)。具体的 I/O 仲裁器芯片在不同的主板版本中有所变化。 最初使用的是 ‘PRO-B0’ 芯片,后来被 ‘NEO-C1’ 所取代。

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2025-7-10 18:56:30 | 显示全部楼层
本帖最后由 n805 于 2025-7-21 20:48 编辑
2 Q" A9 I& G* I) i' ?1 V/ o/ w) }
6 `3 w* p7 A$ Q- M! z1 C/ ~
防扫兴机制

! ?; K, }+ y! }, @: h7 G

0 c4 j; P& `6 j' a+ J( [( t3 f. I! w/ p说到中断,街机筐体所不能承受的就是需要不断的维护。对于因为软件错误而导致游戏突然冻结的情况我们并不陌生。 解决方法也并非秘密:只需重启电源,再次启动游戏即可。 现在想象一下,如果这种情况发生在街机筐体上。 除非街机筐体的所有者恰好就在附近,否则故障的机柜只会带来不断的金钱损失。Neo Geo —— 继承了投币机的要求 —— 通过捆绑一个看门狗程序 提供了“自动修复”过程。 这个程序位于 I/O 仲裁器芯片中。
/ B- s9 B) T7 h! r* `+ H( c
7 O; @" `- t, z8 }0 |
街机筐体无法承受持续的服务需求。 它们已经忙于吸引玩家。
" ^6 d' x1 x% D& @/ M) t
系统的工作原理如下:游戏必须定期向看门狗通知其存在(通过写入特定的寄存器)。 不幸的是,如果在一定时间内看门狗没有收到心跳信号,它就会假设程序已冻结,并进而重置系统。多亏有了这个功能,MVS 的所有者不必时刻留意他们的街机筐体。 与此同时,那些能够负担得起 AES 系统的幸运孩子们即使游戏崩溃也不必离开他们的豪华沙发。不仅如此,MVS 主板还配备了一个额外的微控制器 NEO-F0 。 这个微控制器驱动着投币锁定 机制,防止用户在故障的系统上浪费硬币,除此之外还有其他功能。

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2025-7-11 07:41:23 | 显示全部楼层
本帖最后由 n805 于 2025-7-30 23:24 编辑 / ~  Y% @4 P" E1 i. t  A2 ?
0 w, t2 Q% @" H2 u: o
可用内存; l( S. B. W# ^0 Y

: f+ j6 w# m3 U4 K1 D内存分布在主板和游戏卡带中(顺便说一句,游戏卡带的尺寸相当大)。 请记住这是一个昂贵的系统,因此内存带宽和容量是首要考虑的因素。对于通用内存来说,68000 可用的 RAM 为 64 KB 。 与此同时,Z80 获得了 2 KB 的内存。MVS 版本还另外包含了 64 KB 的内存。 这部分内存连接到了电池上,用于存储游戏得分,因此对于一般用途来说并无用处。有趣的是,这个系统并没有采用任何形式的直接内存访问(DMA)来加速内存传输。 我认为考虑到专用总线的数量,这可能并不是必需的。
* k- M0 w% C6 |/ Y* s6 l) e! t+ J( B- Y! D$ G# z/ Z1 f4 ?, e$ c
$ \- v( G/ b. k% Q* r
主架构图

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2025-7-11 08:00:46 | 显示全部楼层
本帖最后由 n805 于 2026-3-16 10:02 编辑 ) |5 w% W/ @/ `; R6 @
$ B" x# t  Q2 p  o" G

( a! g  g* r( v9 u1 f* B2 _$ w9 r  U
图形
; i5 G3 m* V$ Z  D! S( ?  e% s0 o1 o
Neo Geo 是基于图块的2D图形技术的巅峰之作,图形芯片SNK的体系结构的一个特征是,它可以直接访问一个读取ROM,该处理器的顺序,而无需使用系统总线,用于读取所述图形资源(CPU GPU顺序⇒ ⇔图形资源⇒显示)。这使处理器可以进一步计算。此优化包括允许发布具有非常丰富的2D图形和动画。
# A2 U' h& X. P5 F' J

& H7 {- d+ b; S" {+ n: m1 }

0 e, C3 Z  y5 H  k

8 P, o; S2 x6 k8 xNEOGEO 最令人印象深刻的是其强大的图形处理能力,远超家用游戏机。与其他游戏机不同,NEOGEO 没有常见的背景画面;包括背景在内的所有内容都使用精灵图渲染。而像 NEOGEO 这样采用通用系统主板的硬件,采用这种配置的例子非常少见。Neo.Geo基板的视频结构使用了一种新的画面组成方式,除了最上面的文字层以外,不存在背景层和精灵层的划分,在Neo.Geo系统中,除8×8文字图层以外,无论是背景层还是前台活动精灵层,所有的图形都用条纹链来组合显示。正是这种极端的灵活性,帮助了机皇主机的扛过更新换代的周期。,在Neo.Geo中只要总的条纹链数目不超过限制,在视觉上就可以任意搭配出想要的空间纵深(卷轴层数),同时就人物图案大小而言,Neo.Geo能够实现比卡普空CPS1基板更大的人物图案,当然,凡事有利弊,然而,对于需要控制大量小角色的精细画面而言,CPU负载过高;而且由于缺少背景画面,NEOGEO也不适合以单幅画面为主、动作较少的游戏,例如角色扮演游戏和冒险游戏。另一方面,NEOGEO却非常擅长“动态移动大型角色”,因此可以说,它偶然成为了开发格斗游戏的理想硬件。 总结一句:Neo.Geo系统的视频结构我感觉比卡普空CPS1基板要灵活,组合可能更多,功能更强,但是貌似结构更简单。Neo Geo调色板定义15种颜色(+透明度)。最多可同时使用256个调色板,系统可同时显示3840种颜色。Neo Geo缩放功能是Neo.Geo 2D渲染中最具特色的功能。缩小功能(通过使用存储在 ROM 中的缩放表来添加精灵缩放,纵向256级、横向16级可分别调整缩小)。事实上Neo.Geo并不具备放大功能(Zoom-in),由于无法放大,图像会先以最大尺寸绘制,然后根据需要缩小显示。这是 NEOGEO 的一个典型特征,广泛应用于各种场景。其功能的实现也很有趣,
8 ?2 r- J- e2 C& {: Z4 p

" u2 P% \2 e2 A" f- R; S5 B: p$ d

/ R" k7 }, p9 m  T) @2 l$ ^2 ^

; P5 |2 v$ S+ S2 J; T0 K/ K
(资深玩家肯定记得龙虎之拳2里面的人物和街霸2里面的人物哪个物理尺寸大了)
; |$ ~, y. p0 m0 W; C9 }( s

4 Q7 }( k+ E1 a+ X" E( f
(狼之印记的关卡。钟 直升机使用3D精灵。通过预渲染的3D精灵推动了Neo Geo的图形极限)
; t" Q9 U) t! D, f) r

- e+ V) u9 U+ M

- L9 J& N. p+ x. m0 A: d
; e9 |/ M5 O+ B

# L" ?$ t: f% G0 @2 {% e2 R
(NEO-GEO平台没有卷轴限制的特性也被充分发挥,制作出了相当多华丽的格斗场景。整个画面表现力的提升如此之大,放在今天几乎可以算是跨世代的进化了。)

1 e% ?4 ^* O+ A" x  r3 b
$ h$ A9 s# e  }4 \+ ?1 s+ C6 GNeo.Geo视频结构在视觉上就可以显示近乎空间纵深卷轴数22层(准确的说,NEO-GEO没有卷轴功能).作为一块最为典型的2D基板 。但它有一个名为“FIX 屏幕”的显示区域,位于精灵图的前方。该屏幕专门用于显示分数等文字信息,并且没有滚动功能。此外,该屏幕上每个图块的大小为 8x8 像素,与强大的精灵图功能相比显得较大。虽然 NEOGEO 的显示功能很强大,但它并不擅长通过全屏显示大量精灵来创建强大的图像。在增强整个屏幕表现力的特殊屏幕处理方面,与其他家用游戏机相比略显不足。同年发售的超级任天堂(Super Famicom)所使用的旋转和半透明功能是最好的例子。对于旋转显示,Neo.Geo可以利用ROM容量预先强制绘制所有图案,但当时无法实现半透明效果。一个典型的例子是格斗游戏中的生命值计量条。
, M1 x: u8 u1 H# }
. |5 J4 f0 q1 E6 f) w
. F! `% I  y$ D/ C+ j( W' n/ t
1 I" r, P# C/ p/ P4 i
9 I: Q( k- E! ]: m8 b/ c5 z
) `9 j3 C: n! ?; z  d
/ s$ |7 R7 V% X# f* n8 O

/ n9 \% H" L& ]

本帖子中包含更多资源

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

×

评分

参与人数 1热血 +20 收起 理由
xunxun + 20

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2025-7-12 04:30:53 | 显示全部楼层
本帖最后由 n805 于 2026-3-20 08:26 编辑 0 U5 t1 E* M3 w8 ]* s2 Y6 A2 W
  F5 ^! {. y; ^! v$ f( ]4 z
话虽如此,该主机以符合 NTSC 和 PAL 信号的标准广播每一帧画面(选择哪种信号取决于地区)。 在这种情况下,画面的尺寸为 320 x 224 像素(对于 NTSC)或 320 x 256 像素(对于 PAL)
! L  E1 Z/ F6 _8 l/ ]
芯片组

. W5 |3 G7 e! J: [* Q7 I9 r负责在电视上绘制图像的组件群随着新版本的发布而不断发展。 多年来,SNK 在制造其集成电路时交替使用了 NEC 和富士通。# d. t3 d) {; G3 O1 L( q8 R* Y3 ~4 S7 T
9 [% _1 w8 c( H* _
为了便于解释,我们先从这套芯片中最显著的部分开始描述:
  z- M  g0 n5 O/ jMotorola 68000: 您已经知道它是主CPU。 它的主要作用是填充视频RAM和调色板RAM,并(通过一组公开的寄存器)来设置VDC。
/ A) @# K: a& t1 k7 n" R# Y+ n/ m视频显示处理器(VDC):根据存储在多个内存芯片上的信息,它生成扫描线并将其发送到“调色板RAM”,后者将生成所需的彩色像素。! U7 m8 N- l' p" Y
VDC的物理外观会根据主板型号的不同而变化。 例如,在最初的版本中包含了三个芯片(“LSPC-A0”、“NEO-B0”和“NEO-C0”),而后来的版本则使用了“LSPC-A2”和“NEO-B1”的组合。
% p: D3 V0 U' ?+ J2 [& {( h7 I3 ]视频DAC:将从“调色板RAM”接收到的颜色流转换成视频信号。7 Y0 A3 s3 Y# {
如果之前的解释过于复杂,请不要担心。 接下来的章节将会更详细地解释这些内容。 现在,让我们继续分析这些芯片处理的信息。

! u. w- T- P& `, ~4 _6 C1 f3 G
) D# S# l4 P# T' ^' l
( U: ]! u7 ]% Q2 ]9 f3 h, S

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2025-7-12 04:35:50 | 显示全部楼层
本帖最后由 n805 于 2025-8-20 10:14 编辑
# {9 ^, o& v" m
4 j; i- x5 U5 ^
机皇至奥硬件组织

5 v2 F* h/ x, d图形数据分布在两个独立的板卡 上。 第一张是游戏机的主板 ,另一张位于游戏卡带中。
+ i7 P2 c. p9 m! a+ W+ C

4 `1 ~+ R8 m! L: U# J
图像子系统的内存架构
& ~% z' g$ g7 T0 g# N2 |1 o+ f
在主板区域,我们发现有:
2 |/ O8 j+ c' A* Q" t. c2 A68 KB的VRAM:存储精灵属性和图块引用。
& U0 K; W  a5 p( C* i& U5 w* y物理上,VRAM被分为4 KB 的“快速”VRAM 和64 KB的“慢速”VRAM 。 每一种都通过专用总线连接,并且具有截然不同的延迟。 这决定了CPU在更新其内容后必须等待的周期数。
1 H: ^* G. ~+ l% r四个行缓冲区:存储由VDC渲染的扫描线。 它们仅编码必须与调色板RAM中的其他数据结合使用的图块数据。2 A% l+ Y' \% Y2 ?, G
16 KB的调色板RAM:存储用于图形的色彩调色板。 这个区块还负责向视频DAC发送像素颜色。/ C  ^7 i4 U. \8 `2 \
64 KB的’L0 ROM’:恰好VDC可以缩小精灵图。 为了实现这一点,“L0 ROM”中存储了查找表,告诉VDC根据请求的缩放值应该渲染哪些扫描线。( J( x6 b- }4 d* m/ r
游戏卡带中的相应板卡被称为CHA板,包含以下部分:  ^1 J0 _5 _& _8 l! N3 O
多个C ROM芯片:存储精灵图层的图块。1 S2 O! T. }* {5 B
一个S ROM:存储“固定”图层的图块。
7 J3 z! O6 E+ e" m1 H6 i
/ e9 ^: v4 D2 q) Z) {/ C: V) X
龙虎之拳3视频设计

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2025-7-12 04:41:10 | 显示全部楼层
本帖最后由 n805 于 2025-9-5 13:40 编辑 $ r3 f; v8 G7 Y& e

. ~9 @# L( ~5 N  F; ]2 s/ a
构造帧
# o- \4 F, b+ F
既然您已经大致了解了最重要的组件,现在让我简要概述一下图形子系统如何将数据转换成图像的过程。 换句话说,它是如何渲染一帧的:
( R0 j9 q  [3 H, m1 CPU用精灵图层和固定图层所需的引用填充VRAM。
! ^1 B/ q1 ]0 r: L* v2 根据VRAM中的信息,VDC从C ROMs和S ROM中获取图形,并将它们存储在线缓冲区中。, P1 P, U, ~! [, }2 X; ~0 m2 Z* d
3 在获取过程中,VDC使用线缓冲区中的信息来锁定调色板RAM。 这样后者会将颜色像素数据发送给视频DAC。9 _7 g& L! |& T+ L/ y% f6 e- b* l
4 视频DAC输出视频信号到电视。
2 E% h9 n6 n& g/ F基于这些步骤,现在我将以《龙虎之拳3》为例给您一个详细的解释。

/ W  Z. }; V' G* c9 Q! D1 D+ Y
图块
% c4 ?) s% T2 y8 r! F& \

( @' p" T9 y9 w% b  x: P5 E
一些在CROM中发现的图块。
( Y. _8 h+ u- [# n" R3 L7 \( Y
传统上被称为8 x 8像素位图,图块是构成第四代游戏机图形的基本元素。 由于其独特的属性,Neo Geo只绘制两种类型的图形:固定图块和精灵图。 因此,图块根据图形类型不同而分别进行编码和存储。 在这两种情况下,每个像素使用4位(换句话说,4bpp)进行编码,这意味着它可以选取最多15种颜色加上透明度。就色彩组成而言,调色板RAM允许存储256个色彩调色板。 每个调色板包含十六种颜色,引用16位RGB值。 在所有可用的槽位中,有两个预留条目:一个是“参考颜色”,必须硬编码为$8000(纯黑色);另一个是“背景颜色”,它编码了一个任意颜色,在没有图块的情况下显示。CPU可以在任何时候更新调色板RAM,但它应该只在消隐期间这样做。 否则,屏幕上会出现雪花效果。8 M. y9 ]( e4 C( N$ N+ {+ [4 L- ~

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2025-7-12 15:09:49 | 显示全部楼层
本帖最后由 n805 于 2025-7-12 15:43 编辑 1 r* X$ s6 d6 C8 _* z; Y

+ U6 z5 B: \) ~( g4 @* M- d1 X
固定平面
# ^4 B4 V, o5 I! M, T6 ^
9 o3 d4 Q2 t. |' G3 l
和黑色背景一起的固定平面
! j% w5 N- W2 E
固定平面是一个320 x 256像素宽(40 x 32图块)的图层,几乎占据了整个屏幕。 它的图块是完全静态的,并且只能访问16个色彩调色板。 实际上,这个图层用来显示“始终开启”的信息,类似于Game Boy的窗口图层 。当在CRT屏幕上播放时,显示区域会更小。 因此,其安全区域为38 x 28图块宽。固定图块是在VRAM的一个区域中声明的,称为固定图块映射表(Fix map)。 它以一个40 x 32的表格形式存在,每个条目对应屏幕上的一个位置。S ROM在卡带中存储专用于固定图层的独有图块。 VDC最多只能寻址128 KB,但通过捆绑一个映射器 可以扩展这一限制。
. `' {  t/ {* R& S$ U/ s
精灵图
- V, Q8 y9 R  J/ I- l5 I8 z) ], a& R

& N; e8 B7 s4 h8 K* B3 x
精灵图层,注意它是如何用于场景的所有区域的(不仅仅是两个角色)。
* k8 m& K, c9 m3 F( t- e$ l
如您所知,精灵图是可以自由移动的图块。 然而,在Neo Geo中,用于精灵的图块异常地宽,达16 x 16像素。 考虑到这一点,VDC可以组合由16 x 16像素(1 x 1图块)到16 x 512像素(1 x 32图块)组成的精灵图。 之所以提供这种异常高的组合是因为任何精灵图也可以通过“连接”到前一个精灵图来进行水平组合(尽管它们仍然被计为单独的精灵图)。 总体来说,每行扫描线上最多可以有96个精灵图,每帧最多可以有381个精灵图,这个数量与竞争对手相比是非常大的。就效果而言,精灵图可以翻转和/或缩小。 这些属性存储在VRAM的“快速”区块中,使得CPU可以在不产生显著延迟的情况下更新它们。
9 U2 ?- }3 C" K# ~& [0 z+ ~由于其复杂性,精灵图像在视讯内存(VRAM)中的四个区域进行编码,这些区域被称为精灵图控制块(SCB),每个区块存储以下属性:
! N9 Z& d0 ?, l7 O! F" [SCB1: 图块引用、色彩调色盘引用及X/Y轴翻转。) w* V1 P9 j$ p; T: U/ }
SCB2: 水平和垂直缩小。
3 G9 ^. Q2 J) T, O4 P2 gSCB3: Y轴位置、垂直尺寸(以图块计算)以及精灵是否与前一个相连。
: O) M: M9 R" u" R, F) R0 S$ K精灵图相连会使第二个精灵图继承前者的属性,但不包括水平缩小。! s/ V( S; a5 y  s: X4 n- n
SCB4: X轴位置。: c5 {8 X. Z7 |5 b) ~
如您所见,出于实用考虑,最后三个区块存储在快速VRAM中,而第一个则存储在较慢的VRAM中。
, q  o/ b0 n8 N1 J+ C
结果

8 Z- _/ l* k6 m  z; P

) L0 P3 v( a1 C4 v. S# G3 F* p/ \
显示在屏幕上的结果帧。
3 ?! f8 @8 o! C, A
尽管竞争对手 以与CRT电子束同步渲染而闻名,Neo Geo却采用了一种行缓冲渲染系统。 对于后者,游戏机将渲染的扫描线存储在上述缓冲区中,而不是将它们直接发送到屏幕。 因为视频显示控制器(VDC)具备储存两条扫描线的记忆体容量,这使得VDC可以在显示一条扫描线的同时渲染另一条,从而允许游戏在画面正在显示期间更新图像(除了水平空白期H-Blank 和垂直空白期H-Blank)。说实话,VDC仍然会同时访问VRAM,因此中央处理器(CPU)必须等待12到16个周期(取决于操作)才能再次访问VRAM,否则下一个操作将被忽略(这也是使用两种VRAM变体的原因)。. B" A# C/ T- P

本帖子中包含更多资源

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

×
回复

使用道具 举报

 楼主| 发表于 2025-7-12 15:15:28 | 显示全部楼层
本帖最后由 n805 于 2025-7-14 23:06 编辑
: }) _( d9 E) c) n4 Z4 A$ F) d2 S% T/ A/ e$ J- t( m; E

$ R% r8 A8 F- y* C. f

7 ?5 ~! `4 N+ c1 j
广播发送帧

# l$ M& B# ~3 K  G为了发送已渲染的扫描线,这一过程根据主机型号的不同(AES或MVS)而有所变化。家用版增加了一个视频编码器来生成复合信号和RGB信号。 A/V接口与SMS 和MD 的类似,但不能互换。MVS版则没有这样的设置,因为JAMMA协议将这项任务留给了街机筐体的显示器。 所以主板发送的是原始RGB+同步信号。
9 I  H8 o1 Z5 I/ q

本帖子中包含更多资源

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

×
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Video Game Do It Yourself ( 闽ICP备14000865号-1|闽公网安备35018102240098号 )

GMT+8, 2026-3-22 10:02 , Processed in 0.110879 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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