**ボス戦概要(≤ 256 バイト)**

- **名前:** *オブシディアン・ウォーデン*  
- **アリーナ:** クリスタルの洞窟、遠雷が響く。  
- **フェーズ:**
  1. **召喚フェーズ** – 幽霊ミニオンを呼び出す;レーザー光線は避ける。  
  2. **激怒フェーズ** – 攻撃速度上昇;渦巻くバリアを回避。  
  3. **最終打撃** – テレポートし、巨大な衝撃波を放つ―ブロックのタイミングを合わせる。  
- **主な弱点:** シールドは120 HP 分吸収後に停止。  
- **勝利条件:** HP をゼロに減らすと同時に、最低 30 % の体力を保持すること。

*ヒント:* 洞窟の鍾乳石を盾に使うと、ヒットした際にボスのエネルギーが一部反射される。

2026/04/06 7:32

**ボス戦概要(≤ 256 バイト)** - **名前:** *オブシディアン・ウォーデン* - **アリーナ:** クリスタルの洞窟、遠雷が響く。 - **フェーズ:** 1. **召喚フェーズ** – 幽霊ミニオンを呼び出す;レーザー光線は避ける。 2. **激怒フェーズ** – 攻撃速度上昇;渦巻くバリアを回避。 3. **最終打撃** – テレポートし、巨大な衝撃波を放つ―ブロックのタイミングを合わせる。 - **主な弱点:** シールドは120 HP 分吸収後に停止。 - **勝利条件:** HP をゼロに減らすと同時に、最低 30 % の体力を保持すること。 *ヒント:* 洞窟の鍾乳石を盾に使うと、ヒットした際にボスのエネルギーが一部反射される。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Endbotは256バイトのDOSイントロデモで、DosBox‑X上で動作します。リアルタイムにロボットスプライトを描画し、弾が次第にダメージを受ける様子や拡大する爆発、スクロールするチェッカーボード風景を表示しつつ、MIDIサウンドトラックを再生します。これらはすべて1つの .com ファイルから実行されます。プログラムはFASMで一括コンパイルされ、MIDIデータをポート 0x330へ書き込み、ディスプレイをVGAモード 13h(320×200ビットマップ)に切り替え(A000:0000)、PITタイマーへの書き込みと

hlt
命令の実行で約30FPSを同期させます。音はDosBox‑X の MPU‑401 エミュレーションに依存し、低レベル DOS インタラプト(
int 10h
int 20h
)と直接ポート I/O(0x60 からのキー入力)を使用します。また、
push/pop es
、3で割るための乗算テクニック
mul 0xCCCD
、ビット操作
btc
、ASCII 調整マクロ
aam 9
、パレットルックアップに
xlat
など、多彩なバイト節約トリックを採用しています。スプライトデータブロックには起動時に銃声楽器を初期化する MIDI プログラムチェンジ(
0xC0 7F
)も含まれています。チェッカーボード風景は透視補正スケーリングで描画され、爆発ロジックは拡大円公式(X²+Y² = 影響時間)を使用しています。ESC キーを押すと MIDI リセット(0xFF)が送信され、DOS にクリーンに制御が戻ります。Endbot はレトロデモの極端なサイズ最適化を示し、ミニマルフットプリントと低レベルハードウェア相互作用を重視する愛好家に有用な技術を提供します。

本文

256‑byte DOS Intro – Endbot
by HellMood/Desire – Revision 2026


これは何ですか?

Endbot
は、ちょうど 256 バイトに収まる完全なオーディオ―ビジュアルデモです。
DOS(DosBox‑X 経由)上で実行され、リアルタイムで描画します:

  • 段階的に弾薬ダメージが入るロボットスプライト
  • 拡大する爆発
  • スクロールするチェッカー風の景観
  • MIDI サウンドトラック – すべて単一の小さな
    .com
    ファイルから

ビルド方法

# FASM(Flat Assembler)が必要です
fasm endbot.asm endbot.com

実行 – DosBox‑X の設定

イントロは MIDI ポート

0x330
に書き込みます。MPU‑401 を正しくエミュレートするため、DosBox‑X(単なる DOSBox ではなく)を使用してください。

dosbox-x.conf

[dosbox]
machine=vgaonly
memsize=4

[cpu]
cputype=386
cycles=auto

[midi]
mpu401=uart
mididevice=fluidsynth      ; Windows なら win32、Linux/macOS なら fluidsynth
fluid.soundfont=           ; GM .sf2 のパス(例: /usr/share/sounds/sf2/FluidR3_GM.sf2)

[sblaster]
sbtype=none

[mixer]
rate=44100

実行方法:

dosbox-x -conf dosbox-x.conf endbot.com

ESC を押すと終了します。
コードは終了時に MIDI リセット (

0xFF
) を送信するので、音が残ることはありません。


コードの概要

1 – ファイルヘッダー&初期化

org 100h
push 0xa000-20*4          ; VGA フレームバッファ(A000:0000)に若干オフセット
pop es                     ; ES に設定
mov al,0x13                ; モード 13h – 320×200、256 色
int 0x10
mov cl,Nasenatmungsgeraeusch ; 音楽+スプライトブロックの長さ
mov di,si                  ; 音楽ポインタをピクセルポインタに合わせる

initbp
は初期 BP 値です;すべてのタイミングはこれに相対します。


2 – メインループ&フレーム毎処理

StartFrame:
    mov dx,0x330            ; MIDI ポート
    sub di,si               ; ピクセルカウンタを進める
    jnz StartPixel          ; フレームの終わりでない → ピクセル単位作業へ

    mov ax,bp
    sub al,initbp&0xFF      ; 0 / 256 / 512 / 768 のときにヒット
    jnz NoSound
        rep outsb           ; CX バイトを MIDI に送信(CX=4 が最初のビート)
NoSound:
    mov al,1193182/256/30   ; PIT 周波数 / 高バイト / FPS
    out 40h,al              ; タイマー設定 (~30 FPS)
    hlt                     ; 次の割り込みを待つ
    inc bp                   ; 次のタイムステップへ
    xor byte [si-Nasenatmungsgeraeusch+Colors+1-8],cl   ; 怒りフリッカー
    in al,0x60               ; キーボードスキャンコード取得
    sub al,2                 ; ESC → 0xFF(キャリー設定)
    jc Quit                   ; ESC が押されたら終了

外側のループはピクセル単位で走ります。

di
がゼロにラップするとフレーム毎ブロックが実行されます。


3 – ピクセル単位:X/Y デコード & 爆発判定

StartPixel:
    mov ax,0xcccd            ; Rrrola テクニック → DL に X、DH に Y を近似取得
    mul di
    mov ax,bp
    sub ax,(768+initbp)      ; 爆発からの経過時間
    mov cx,dx                ; スプライト描画に x,y が DX と CX で必要
    jc NoExplosion           ; まだ爆発していない
    jz Flash                  ; 衝突直後 – 一度だけオレンジフラッシュ

0xCCCD × index → 高ワードが (X<<8)/320 + Y を近似

ax
のテストで爆発の有無を判断します。


4 – 爆発円、フラッシュ & 終了

sub ch,al                  ; 衝突後にボットを下へ移動
xchg bx,ax                 ; 脱落時間を BL に格納
mov al,dh
sub al,77
imul al                    ; Y*Y
sub bl,ah
mov al,dl
add al,128
imul al                    ; X*X
cmp bl,ah                  ; (time – R²) と比較

Flash:
    mov al,0x2a            ; オレンジ値
    jz PlotPixel           ; 円周上にある場合 → オレンジで描画
    jnl BackGround         ; 内部なら背景へ溶け込む
    js NoExplosion

Quit:
    out dx,al              ; 0xFF(無音)または無音後の破棄バイトを送信
    ret                    ; DOS 終了 (int 20h)

拡大円は

X² + Y² = time
で定義されます。
エッジ上のピクセルはオレンジ、内部は背景へフェードします。


5 – スプライト:登場・アニメーション・ダメージ

NoExplosion:
    mov ax,bp
    cmp ax,256+initbp       ; 最初の 256 ステップではスプライトなし
    jl BackGround
    test al,32              ; ミラーフラグ
    jnz NoAniFlip
        not al
NoAniFlip:
    and al,63
    add al,148
    add cl,al
    js BackGround
    sub ch,36+8
    js BackGround

DrawSprite:
    mov bx,Sprite           ; スプライトデータアドレス
    mov ax,bp
    sub ax,(512+initbp)     ; ダメージ時間?
    jc SkipDamage
        xor al,1010101b
        btc word [bx],ax
SkipDamage:
    shrd ax,cx,18            ; スケール&ローカル X,Y を転送
    test al,16              ; Y 軸ミラー?
    jz NoFlip
        not al
NoFlip:
    and ax,00011110b*256 + 00011110b
    xchg cx,ax
    add bl,ch
    mov ax,[bx]
    shr ax,cl
    mov bl,Colors-1
    and al,3
    xlat                     ; パレット検索 (AL = [BX+AL])
    jnz PlotPixel

ロボットスプライトは 16×16 のビットマスクで、各ピクセルに 2 ビット(合計 4 色)を使用します。
512 ステップ以降はランダムなビットが反転 (

btc
) され、弾薬の穴が蓄積されます。


6 – 背景:空 & スクロールする地形

BackGround:
    mov al,0x4e+72          ; 青みがかった色
    test dh,dh              ; 地平線上か?
    jns PlotPixel
    sub dh,-(128+13)
    js PlotPixel
    mov ax,bp
    div dh                   ; 深度 = BP / Y
    xchg dx,ax
    add al,128
    imul dl
    add dx,bp
    xchg dx,ax
    xor dh,al
    imul dh
    aam 9
    add al,212

PlotPixel:
    stosb                    ; ピクセルを書き込み ES:[DI] に
    mov cx,4                 ; 次フレームロジック用に CX を復元
jmp StartFrame

dh
が正のピクセルは空、地形は視点深度(BP/Y)とスクロールするチェッカー模様で描画されます。
aam 9
は不規則な色帯を生成します。


7 – データ:スプライト、MIDI & カラーパレット

Sprite:
dw 0000111101110000b   ; ピクセルデータ (Steffest/Desire)
...
dw 1111111111111100b

MusicData:
db 0xc9,56              ; ドラムチャンネル SFX
db 0x99                 ; ドラムで再生
db 70,0x58              ; ヘリコプター中程度
db 81,0x7F              ; 最大風速

Colors:
db 0x15,0x2C,0x13       ; 明るいグレー、黄色、暗いグレー

MusicData2:
db 0xc1,91,0x91,37,127

Burst:
db 0xb3,0,9,0xc3

Nasenatmungsgeraeusch:
db 125,0x93,40,127

Gunsound:
db 0x99,70+3,90,0

ExplosionAndTheEnd:
db 0xFF,0x90,34,127

スプライトビットマップと MIDI 音楽は連続したメモリブロックを共有します。
行 8 に

0xC0
0x7F
が含まれており、これは有効な MIDI プログラムチェンジ(チャンネル 0、パッチ 127 = 銃声)です。


サイズ削減テクニック

テクニックバイト節約
push imm / pop es
vs.
mov ax,… / mov es,ax
4
BP をグローバルクロックとして使用なし
mul 0xCCCD
による X/Y 推定(5 バイト)vs. 完全除算
3
stosb
でピクセルを書き込みつつ DI 自動インクリメント
1
hlt
でフレーム同期
1
xlat
パレット検索
1
btc
でスプライトビットを一命令で反転
1
aam 9
モジュロ演算
2
スプライトが MIDI 初期化データとしても機能0
DOS 終了に
ret
を使用
1

同じ日のほかのニュース

一覧に戻る →

2026/04/08 3:09

**プロジェクト・グラスウィング:AI時代における重要ソフトウェアの保護**

## Japanese Translation: Project Glasswingは、AWS、Microsoft、Google、Cisco、Apple、Broadcom、JPMorgan Chase、NVIDIA、Palo Alto Networks、およびLinux Foundationを含む主要なクラウド・ソフトウェア・金融企業を結集し、Anthropicの未公開Claude Mythos Preview AIを用いて高重大性のソフトウェア脆弱性を発見・修正することを目的としています。Mythos PreviewはすでにOpenBSD、FFmpeg、およびLinuxカーネルで重要なバグを検出し、その後メンテナがパッチを適用しました。Anthropicはパートナー向けに最大1億ドルの使用クレジットと、オープンソースセキュリティグループへの追加400万ドルの寄付を提供しており、40社以上の組織もモデルアクセスを受け取ります。参加者は90日以内に調査結果を公開し、ベストプラクティスを共有し、脆弱性開示、自動パッチング、安全な開発ライフサイクル、およびサプライチェーンセキュリティに関する推奨事項を策定する予定です。このイニシアチブは米国政府担当者と協力してツールの攻撃および防御機能を評価し、最終的には独立した組織が業界・公共部門全体で継続的な大規模サイバーセキュリティ作業を調整する可能性があります。研究プレビュー後、AnthropicはMythos PreviewをClaude API、Amazon Bedrock、Google Vertex AI、およびMicrosoft Foundry経由で参加者に対し1百万トークンあたり25ドル/125ドルで提供する予定です。

2026/04/08 0:03

「月のフライバイ」

## Japanese Translation: オリオン宇宙船は、NASA のアーテミス II ミッションに乗組みされ、2026年4月6日に月を周回しながら一連の写真を撮影しました。クルー(パイロット・ビクター・グローバー、指揮官リード・ウィスメン、ミッションスペシャリストジェレミー・ハーネスとクリスティーナ・コック(さらにカナダ宇宙機関のアストロノート・ハーネス))はオリオンの窓から、EDT 18:41に地球沈没、ET 19:22に地球昇起、および月面の詳細な映像を記録しました。1枚の画像ではオリオンの前景から月と地球の両方が同時に写っており、別のクローズアップは周回の終盤(約3:41)に撮影されました。ハーネスは観測期間中に窓2にカメラシャードを装着し、いくつかのショットでは日食時に太陽が月面を背光し、左端で太陽が昇り、ほぼ1時間続いたシーケンスの終わりまで撮影されました。午後2:19には画像の左半分が月表面で満たされました。オリオン自体は複数の写真で日光を浴び、その輪郭が宇宙空間に浮かぶ姿が際立っています。 この改訂された要約は、将来の設計への影響について推測的な結論を避けつつ、すべての主要ポイントを網羅しています。

2026/04/08 4:44

S3ファイル

## Japanese Translation: Andy Warfield のチームは **S3 Files** を構築しました。これは、ユーザーが Amazon S3 バケットまたはプレフィックスを EC2、コンテナ、または Lambda 上の NFS スタイルネットワークファイルシステムとしてマウントできるシステムです。この設計では EFS がステージングに使用されます。ファイル変更はローカルで書き込まれ、その後約 60 秒ごとに自動的に S3 に *コミット* されます(起動時には手動コミット制御はありません)。複数のクライアントが同じオブジェクトを修正した場合、conflict‑resolved コピーが lost+found ディレクトリに保持されます。メタデータは遅延でハイドレーションされ、小さなファイルは即時ロードされ、大きなファイルは読み込み時にストリーミングされるため、数百万オブジェクトを持つバケットでも迅速にマウントできます。大規模な連続読み取りはローカルキャッシュをバイパスし、並列 GET を介して直接 S3 にアクセスすることで、クライアントあたり約 3 GB/s の速度を実現し、多数のクライアントにわたって拡張可能です。システムは S3 の IAM ポリシー、オブジェクトの不可変性、および命名セマンティクスを保持しつつ、完全な NFS スタイルファイル操作(パーミッション、原子リネーム、ディレクトリトラバーサル)を公開します。ただし、S3 にはネイティブなリネームがないため、リネーム操作は高コストであり、有効な POSIX ファイル名にマッピングできないキーはマウントから除外されます。 Warfield の以前の **S3 Tables** と **S3 Vectors** に関する研究は、構造化データ・ベクトル・ファイルを S3 で一等のプリミティブとして扱うというより広範な戦略を示しています。UBC でのゲノム研究では、大規模データセットをローカルファイルシステムとオブジェクトストア間で移動する際の苦労が明らかになり、この統一アクセスレイヤーへの動機付けとなりました。ベータ版からの早期フィードバックは、パフォーマンス制限(例:5,000 万オブジェクトを超えるマウントに対する警告)、コミットウィンドウ、および問題キーの処理方法を形作っています。目標は Amazon のデータレイクポートフォリオを拡張し、開発者が配管よりもドメインロジックに集中できるようにすることであり、エンタープライズ向けにはデータサイエンス、機械学習、メディア処理などで、コストの高いマイグレーションや新しいツールを必要とせずにローカルとオブジェクトストアへのアクセスを統一することで恩恵をもたらします。

**ボス戦概要(≤ 256 バイト)** - **名前:** *オブシディアン・ウォーデン* - **アリーナ:** クリスタルの洞窟、遠雷が響く。 - **フェーズ:** 1. **召喚フェーズ** – 幽霊ミニオンを呼び出す;レーザー光線は避ける。 2. **激怒フェーズ** – 攻撃速度上昇;渦巻くバリアを回避。 3. **最終打撃** – テレポートし、巨大な衝撃波を放つ―ブロックのタイミングを合わせる。 - **主な弱点:** シールドは120 HP 分吸収後に停止。 - **勝利条件:** HP をゼロに減らすと同時に、最低 30 % の体力を保持すること。 *ヒント:* 洞窟の鍾乳石を盾に使うと、ヒットした際にボスのエネルギーが一部反射される。 | そっか~ニュース