- 浏览: 16228 次
文章列表
6502 .. 实际上这样称呼 NES/FC 的CPU是不对的 ... 这个汇编模拟的NES CPU经验证 ... 是可以正常运行的 ... 写的时间很短 》。。 很长时间都是浪费在BUG查找上 》。。为此。。用DirectX写了一个 PPU验证我结果的正确性 ..
; ==========================
; zero page get address
; ==========================
__zrp_get:
movzx eax, byt[ebx+1]
mov byt[__addr8_r], al
add wot[__ ...
DirectX龙书 错误的地方 ...
- 博客分类:
- directx
d3dUtility.cpp
直接删除 会返回1 都知道 HRESULT 成功是返回0 的 在 Device借口后面(void Cleanup()里面)删除即可 ...
龙书一整本在这里全是错的 今天调试才发现。。。
NES 的$4016
- 博客分类:
- NES
$4016 是 手柄1 的选通 ...
此 IO端口 在读写时候有着不同的行为 ...
首先读手柄的状态 ... 要先向 $4016 写 1 此时内部的计数器开始工作并且会为数据流上锁... 表示已经做好准备 ... 此时在往$4016 写0 解锁 数据才能正确读取出来 ...
数据流一共有 24 bit 如图
信号用来检测是4端口的接入状态:
%0000:没有连接设备
%0001:只有$4016手柄
%0010:只有$4017手柄 (此段话摘自任天堂产品文件)
对于一般的输入 ... 只要 获取0 - 7 位即可 ...
NES的输入设备流 ...
10 12 00 00 _c_rgodfDIKeyboard dd offset _GUID_Key ; DATA XREF: .rdata:00000200o
.data:00000208 00 db 0
.data:00000209 00 db 0
.data:0000020A 00 db 0
.data:0000020B 00 ...
pragma (lib, "gdi32.lib");
pragma (lib, "d3d9.lib");
pragma (lib, "winmm.lib");
pragma (lib, "ole32.lib");
import core.runtime;
import win32.windows;
import core.stdc.stdio;
import std.string;
import std.conv;
import std.math;
extern(C)
UINT GetKer ...
头文件 XAudio2.d 里 interface IXAudio2Voice 改为 extern(C++) interface IXAudio2Voice
不要继承自 COM 抽象基类 IUnknown 即可 (这帮为D DirectX 编写的程序员可能是粗心了 没注意到吧 ... 话说写完自己也不测试一下吗 ..-_-)
以及一下都要改 跟上面是一样的 ...
IXAudio2EngineCallback
IXAudio2VoiceCallback
以及一切继承至 IXAudio2Voice 的类 ...
参考自 : http://forum.dlang.org/thread/zw ...
.686 ; create 32 bit code
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
; 43210
; |||||
; |||++- Pixel value from tile data
; |++--- Palette number from attribute table or OAM
; +----- Background/ ...
.686 ; create 32 bit code
.mmx
.xmm
.model flat, stdcall ; 32 bit memory model
option casemap :none ; case sensitive
.code
; ml -c /omf ad.asm
; Microsoft (R) Macro Assembler Version 10.00.30319.01
; Copyright ...
__declspec(naked) static __cdecl getCrc32(unsigned int size, unsigned char* buffer) {
__asm {
mov edx, 4[esp] ; - U ecx <- loop count
mov esi, 8[esp] ; - V esi <- source buffer
lea edi, [crc32_table] ; - U crc32 table
xor ecx, ecx ; - V
...
masm 像素碰撞检测
- 博客分类:
- n/a
256 * 240 的 directx surface
_spriteDrawAndTest proc C _pBuffer, _pSprite, _xPos, _yPos, _pStruct, _AColor
; esp + 4 +32 esp + 8 + 32 esp + 12 + 32
option prologue:none, epilogue:none
;.FPO ( 0, 6, 0, 0, 0, 0 )
pBuffer equ [esp+36]
pSprite equ [esp+40]
xPos ...
masm 下载 是从 vs10 里抠出来的 裸程序 ml.exe + cmd 支持 sse 指令集 的使用 ... 内联汇编在一般程序中使用完全足够了 ... 不过一些动态跳表内联汇编还没见过支持的 ...
D语言 引用外部变量
- 博客分类:
- d语言
跟 c 语言一样 ... 唯一注意的是 要用 extern (C) 默认的d风格修饰的变量 没有 linkage attribute
//////////////////////////////
kl.d
module kl;
extern (C) int d;
//////////////////////////
main.d
import kl;
extern extern(C) int d;
int main(){
d = 5;
return 0;
}
///////////////////////
dmd kl main