acl4の開発ログ #07

2026.03.04(水) #0

2026.03.04(水) #1

#define x   R00
#define y   R01
#define c   R02
#define sx  R03
#define sy  R04
#define cx  R05
#define cy  R06
#define zx  R07
#define zy  R08
#define xx  R09
#define yy  R0a
#define n   R0b
#define sn  R0c
#define t0  c
#define lp0 L0000
#define lp1 L0001
#define lp2 L0002
#define lp3 L0003
#define lp4 L0004
#define sk0 L0005
#define sk1 L0006

  Lod_RI(x, 512); Lod_RI(y, 384); Dbg_OpenWin_RR(x, y);
  Lod_RI(y, 0); Lbl_T(lp0); // for (y = 0; y < 384; y++) {
    Lod_RI(x, 0); Lbl_T(lp1); // for (x = 0; x < 512; x++) {
      Lod_RI(sn, 0);
      Lod_RI(sx, 0); Lbl_T(lp2); // for (sx = 0; sx < 4; sx++) {
        Lod_RR(cx, x); Mul_RI(cx, 4); Add_RR(cx, sx); Mul_RI(cx, 56); Add_RI(cx, 4673536);
        Lod_RI(sy, 0); Lbl_T(lp3); // for (sy = 0; sy < 4; sy++) {
          Lod_RR(cy, y); Mul_RI(cy, 4); Add_RR(cy, sy); Mul_RI(cy, -56); Add_RI(cy, -124928);
          Lod_RR(zx, cx); Lod_RR(zy, cy);
          Lod_RI(n, 1); Lbl_T(lp4); // for (n = 1; n < 447; n++) {
            Mul64Shr_RRRI(xx, zx, zx, 24);
            Mul64Shr_RRRI(yy, zy, zy, 24);
            Lod_RR(t0, xx); Add_RR(t0, yy); Jgt_RIT(t0, 0x4000000, sk0);
            Mul64Shr_RRRI(zy, zy, zx, 23);
            Lod_RR(zx, xx); Add_RR(zx, cx); Sub_RR(zx, yy);
            Add_RR(zy, cy);
            Add_RI(n, 1); Jlt_RIT(n, 447, lp4);
Lbl_T(sk0);
          Add_RR(sn, n);
          Add_RI(sy, 1); Jlt_RIT(sy, 4, lp3);
        Add_RI(sx, 1); Jlt_RIT(sx, 4, lp2);
      Shr_RI(sn, 4);
      Lod_RR(c, sn); Mul_RI(c, 256);
      Jlt_RIT(sn, 256, sk1); // if (sn >= 256) {
        Lod_RI(c, 0);
        Jge_RIT(sn, 447, sk1); // if (sn < 447) {
          Lod_RR(c, sn); Add_RI(c, 0xfe01);
Lbl_T(sk1);
      Mul_RI(c, 256);
      Dbg_SetPix_RRR(x, y, c);
      Add_RI(x, 1); Jlt_RIT(x, 512, lp1);
    Add_RI(y, 1); Jlt_RIT(y, 384, lp0);
  Dbg_Ret_I(0);
#define Lbl_T(t)        t:
#define Lod_RI(r, i)    r=i
#define Lod_RR(r, s)    r=s
#define Add_RI(r, i)    r+=i
#define Add_RR(r, s)    r+=s
#define Sub_RR(r, s)    r-=s
#define Mul_RI(r, i)    r*=i
#define Shr_RI(r, i)    r>>=i
#define Jlt_RIT(r, i, t)    if(r< i)goto t
#define Jge_RIT(r, i, t)    if(r>=i)goto t
#define Jgt_RIT(r, i, t)    if(r> i)goto t
#define Mul64Shr_RRRI(r, s, t, i)   r=(intptr_t)(((int64_t)s*(int64_t)t)>>i)
#define Dbg_OpenWin_RR(x, y)        a_Win win[1]; a_Win_ini(_arg_  win, x, y, "graphic", 0)
#define Dbg_SetPix_RRR(x, y, c)     setPix0(win, x, y, c)
#define Dbg_Ret_I(i)                a_Win_flushAll0(win); return i

2026.03.04(水) #2

2026.03.04(水) #3

2026.03.05(木) #0

2026.03.05(木) #1

2026.03.05(木) #2

2026.03.06(金) #0

2026.03.09(月) #0

2026.03.11(水) #0

こめんと欄


コメントお名前NameLink

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS