欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在GBA上写光线追踪:自制GBA库 lib_hl 汇总

程序员文章站 2022-03-25 16:25:48
写个自己的GBA库 上篇文章(待写)介绍了GBA的硬件,例如寄存器、内存、中断等,其中很多寄存器可以说是GBA的遥控器,要使用GBA的硬件功能,就是要和这些寄存器打交道。 怎么打交道呢?这些寄存器都有地址,在C语言中可以转成指针来读写。为了方便使用,我们需要先写一个GBA库,库里应该有: 这个库需要 ......

写个自己的gba库

上篇文章(待写)介绍了gba的硬件,例如寄存器、内存、中断等,其中很多寄存器可以说是gba的遥控器,要使用gba的硬件功能,就是要和这些寄存器打交道。

怎么打交道呢?这些寄存器都有地址,在c语言中可以转成指针来读写。为了方便使用,我们需要先写一个gba库,库里应该有:

  • 这个库需要定义gba的各种功能寄存器,这样我们就可以通过设定寄存器来控制gba。
  • 各段内存地址的定义,这样我们才能将图像,音频等数据放到正确的地方
  • 内置系统函数的定义,方便调用gba的bios里自带的系统函数
  • 常用数学运算库,图形音频处理库,压缩解压库等等功能。

其实这些库在任天堂公司开发gba之初就提供给开发者了,但因为商业性质没有公开。有民间gba开发爱好者也编写了库,在你的devkitpro安装后,目录里的/libgba和/libtonc就分别是devkitpro和tonc教材作者写的gba库。

不过我就喜欢自己造*,所以就从写gba库开始学gba吧。大概现在还在玩gba的人也都是我这种爱搞底层、爱捣鼓的家伙。

事实上因为gba的特性已经在手册上写得清清楚楚,所以自己写个库确实不难,这篇文章是我的gba库——lib_hl的索引。

数学库部分包括这些内容:

  • 基础数学函数库
  • 矢量,矩阵运算库

硬件部分包含这些内容:

  • 图像显示相关寄存器和函数
  • 图像硬件相关
  • 计数器计时器相关
  • 内存管理相关

每个部分都能写好长的流水账,我只能挑关键的写点,其他请移步看源代码。