Chủ Nhật, 8 tháng 10, 2017

[Asm]Lập trình Snes bài 2



(Tham khảo video trên và xem phần hướng dẫn bên dưới)

Hướng dẫn lập trình cho máy Snes bằng ngôn ngữ Assembly 65816

Bài 2: màu sắc, bối cảnh

2.1. Màu sắc

Máy Snes có khả năng hiển thị cao nhất là 256 màu, mỗi màu là 15 bit (2 byte). Do vậy, bảng palette màu của Snes chiếm 512 byte cho 256 slot (ngăn, ô chứa) chứa màu.
Định dạng màu của Snes là:
0BBBBBGG GGGRRRRR

(B: Blue, màu lam; G: Green, màu lục; R:Red, màu đỏ)
Bit thứ 15 luôn là 0. Như vậy có thể thấy mỗi màu cơ bản (lam, lục, đỏ) chỉ gồm 5 bit, có giá trị dao động từ thấp nhất (0 hay $00) là 0 đến cao nhất ( 11111 hay $1F) là 31. Màu RGB 24 bit (mỗi màu cơ bản chiếm 8 bit, hay 1 byte) thông thường có giá trị dao động từ 0 (0 hay $00) đến 255 (11111111 hay $FF).

Như vậy, để chuyển đổi từ màu RGB 24 bit sang định dạng màu BGR 15 bit của Snes thì áp dụng công thức:

R = R / 8 (vd: 17 / 8 = 2)
G = G / 8 (vd: 16 / 8 = 2)
B = B / 8 (vd: 14 / 8 = 1)
=========
Màu Snes = B x 1024 + G x 32 + R


Chẳng hạn, đổi màu trắng (255, 255, 255) 24 bit sang định dạng của Snes:

R = 255 / 8 = 31
G = 255 / 8 = 31
B = 255 / 8 = 31
================
Màu Snes = 31 x 1024 + 31 x 32 + 31 = 32767 


Tương đương với giá trị $07FF.
Đoạn code sau đổi màu nền thành màu trắng.

STZ $2121  //slot màu 0, tức màu nền
LDA #$FF
STA $2122
LDA #$07
STA $2122
 

2.2.Bối cảnh (Background - BG):



Một khung hình Snes hiển thị gồm tối đa 4 lớp (Layer), mỗi lớp thể hiện một bối cảnh (Background) và 1 lớp thể hiện sprite. Chẳng hạn như hình ảnh trong game Mario dưới đây gồm: 3 lớp Background + 1 lớp sprite.

 
Gồm

Background 1
 
và Background 2
 
và Background 3
 
và cuối cùng là lớp sprite

 

Snes có 7 cách thể hiện các lớp bối cảnh này, hay còn gọi là 7 mode thể hiện. Số lượng lớp Background, số lượng màu cho từng lớp khác nhau tùy thuộc vào mode hiển thị. Cụ thể:

Mode    # Màu BG
         1   2   3   4
======---=---=---=---=
0        4   4   4   4
1       16  16   4   -
2       16  16   -   -
3      256  16   -   -
4      256   4   -   -
5       16   4   -   -
6       16   -   -   -
7      256   -   -   -


(Mode 0 có thể hiển thị cùng lúc 4 BG + 1 lớp sprite, mỗi BG thể hiện được 4 màu, Mode 1 thể hiện được cùng lúc 3 BG + 1 lớp sprite, trong đó 2 BG hiển thị 16 màu và 1 BG hiển thị 4 màu,...)
Mode 7 là mode hiển thị "nổi tiếng" nhất của Snes, với khả năng cho hình ảnh 3D, xoay bối cảnh, phóng to, thu nhỏ...


Mode hiển thị được đăng ký qua Register $2105.
Đây là Register 8 bit với nội dung như sau:

Bit  7  Kích thước Tile  BG4  (0=8x8, 1=16x16)
Bit  6  Kích thước Tile  BG3  (0=8x8, 1=16x16)  ; (BgMode5: 8x8 thực chất là 16x8)
Bit  5  Kích thước Tile  BG2  (0=8x8, 1=16x16)  ; (BgMode6: cố định 16x8)
Bit  4  Kích thước Tile  BG1  (0=8x8, 1=16x16)  ; (BgMode7: cố định 8x8)
Bit  3  Mức độ ưu tiên của BG3 ở Mode 1 (0=thường, 1=ưu tiên)
Bit  2-0  Chế độ BG, cụ thể như bên dưới

Mode   BG1         BG2         BG3         BG4
  0      4 màu     4 màu     4 màu     4 màu  
  1      16 màu    16 màu    4 màu 
  2      16 màu    16 màu  
  3      256 màu   16 màu   
  4      256 màu   4 màu    
  5      16 màu    4 màu   
  6      16 màu   
  7      256 màu  


Chẳng hạn, muốn thể hiện màn hình ở Mode 1 với kích thước BG1 là 16x16 pixel cho mỗi Tile thì cần ghi giá trị 00010001 vào $2105

    LDA #$11   
    STA $2105

 

2.3. Video Ram:

Video Ram (gọi tắt là Vram) là vùng Ram chứa mọi dữ liệu để hiển thị lên màn hình. Địa chỉ Vram thuộc kiểu Word, tức tính bằng 2 byte một.
Vram được truy cập thông qua 2 Register:

- $2116, $2117: Register 16 bit này giữ địa chỉ của dữ liệu trong Vram.
- $2118, $2119: Register 16 bit này cho phép ghi dữ liệu vào Vram.

Chẳng hạn:

REP #$30   // đổi sang A, X, Y 16 bit
LDX #$0200
STX $2116
LDA #$DEAD
STX $2118

Sẽ ghi giá trị $ADDE vào địa chỉ Vram (200 x2) $400.

Ngoài ra, cách ghi dữ liệu vào Vram còn được định nghĩa qua giá trị của bit 7, bit 3~bit 0 ở Register $2115. (Bit 6~ bit 4 không sử dụng)

Bit 7:
- 0: địa chỉ Vram sẽ gia tăng sau khi dữ liệu được ghi vào $2118.
- 1: địa chỉ Vram sẽ gia tăng sau khi dữ liệu được ghi vào $2119.
Bit 3~bit 0:
     0  1  0  0 | gia tăng 8 trong 32 lần
     1  0  0  0 | gia tăng 8 trong 64 lần
     1  1  0  0 | gia tăng 8 trong 128 lần
     0  0  0  0 | gia tăng 1
     0  0  0  1 | gia tăng 32
     0  0  1  0 | gia tăng 64
     0  0  1  1 | gia tăng 128

 
Chẳng hạn, ta có chuỗi FF-03-2E-1A ghi vào địa chỉ $00 trong Vram:

- Nếu bit 7=1, bit 3~bit 0 đều là 0 thì FF và 03 lần lượt được ghi vào $00 và $01, 2E và 1A lần lượt được ghi vào $02 và $03
- Nếu bit 7=1, bit 3~ bit 1 là 0001 thì FF và 03 được ghi vào $00 và $01, đến lượt 2E và 1A được ghi vào địa chỉ cách đó 32 byte. 32 tức $20, nhưng vì địa chỉ Vram là kiểu Word nên phải nhân đôi, tức 2 byte tiếp theo trong chuỗi là 2E và 1A sẽ được ghi vào địa chỉ $40.
- Nết bit 7=0, bit 3~1 là 0000 thì đầu tiên, FF được ghi qua $2118 vào $00, sau đó địa chỉ Vram được tăng 1 ($01 x 2=$02) nên 2E, 03 được lần lượt được ghi vào $02, $03. 


Register $2118 chỉ có thể được truy cập (ghi) trong 2 khoảng thời gian duy nhất: Vblank và Forced blank. Khái niệm này sẽ được giải thích trong phần sau.
 
2.4. Tileset và Tilemap:

Có thể hình dung mọi thành phần đồ họa trên màn hình như các mảnh của trò ghép hình.
 
Bản thân "dữ liệu" các mảnh ghép được gọi là Tileset (hay còn gọi là Character data), còn "bản đồ" bố trí vị trí các mảnh này để tạo nên hình thù mong muốn được gọi là Tilemap.

Địa chỉ của Tileset của các BG được xác định qua Register $210B và $210C.
- Register $210B: bit 7~4: địa chỉ Vram của Tileset của BG2, bit 3~0: địa chỉ Vram của Tileset của BG1
- Register $210C:
bit 7~4: địa chỉ Vram của Tileset của BG4, bit 3~0: địa chỉ Vram của Tileset của BG3

Địa chỉ Vram của Tileset được tính bằng cách Left-shift (dời trái) 13 lần.
Chẳng hạn:

LDA #$03
STA $210B 

Sẽ cho địa chỉ Tileset của BG1 tại $6000 trong Vram. (03 <<13 = 24756, hay $6000). Địa chỉ byte của nó là $3000.

Địa chỉ Tilemap của các BG trong Vram được xác định qua 4 Register từ $2107 ~ $210A (lần lượt từ BG1~BG5) theo định dạng:

aaaaaass

Trong đó 6 bit aaaaaa xác định địa chỉ, 2 bit ss chỉ kích thước Tilemap (số lượng Tile trong Tilemap). Cụ thể:
00=32x32 01=64x32
10=32x64 11=64x64


Địa chỉ Vram qua 6 bit được tính bằng cách left-shift (dời trái) 11 lần.
Chẳng hạn:

LDA #$20
STA $2107

Xác định Tilemap của BG1 có các tính chất sau:

- $20 = 00100000, có 001000 = 08 << 11 = 16384 = $4000. Tức địa chỉ Tilemap của BG1 này bắt đầu tại $4000 trong Vram, hay $2000 tính theo địa chỉ byte.
- $20 = 00100000, có 00 cho kích thước Tilemap là 32x32 Tile. Kích thước của mỗi Tile là bao nhiêu pixel phụ thuộc vào giá trị từ bit 7 ~ bit 4 của Register $2105 như đã nói ở phần trước.

 

2.5. Cụ thể về Tilemap:

Như đã đề cập, Tilemap chính là sơ đồ bố trí các mảng (mảnh) đồ họa để tạo nên hình ảnh trên màn hình. Mỗi mảng gồm 16 bit (2 byte) nên vì thế địa chỉ Vram là kiểu Word (2 byte). Nội dung các bit này là

vhopppcc cccccccc

Trong đó:
- Bit v cho phép xoay mảng (mảnh) theo chiều đứng
- Bit h cho phép xoay mảng (mảnh) theo chiều ngang
- Bit o: mức độ ưu tiên hiển thị của mảng 
- 3 bit ppp: số thứ tự của slot (ngăn, ô chứa) màu. Tùy thuộc vào BG và Mode hiển thị, như đã đề cập ở phần trên.
- 10 bit cc cccccccc còn lại: số thứ tự của mảng


Chẳng hạn, nếu mảng có giá trị C002 (1100000000000010) trong Vram (do Snes dùng kiểu Little-endian nên hiển thị là 02C0) thì có các đặc tính:

- Xoay ngược chiều ngang và dọc
- Không được hiển thị ưu tiên (có thể bị Tile khác đè lên)
- Có palette màu như cách tính slot bên dưới
- Là Tile số 02 (0000000010)

Số thứ tự của palette của Tile thay đổi tùy thuộc vào chế độ hiển thị của BG. Cụ thể:

- Mode 0: vị trí của palette được tính bằng công thức ppp*4 + (BG#-1)*32
- Mode 1: vị trí của palette được tính: ppp*n màu
- Mode 2: vị trí của palette được tính: ppp*16
- Mode 3: BG1 cố định 256 màu, BG 2 có vị trí của palette được tính: ppp*16
- Mode 4: BG1 cố định 256 màu, BG 2 có vị trí của palette được tính: ppp*4
- Mode 5: vị trí của palette được tính: ppp*n màu
- Mode 6: duy nhất BG1 16 màu và vị trí của palette được tính: ppp*n màu
- Mode 7: 256 màu.



 Như vậy, Tile có giá trị C402 (1100010000000010) đối với Mode 1, BG1 sẽ có palette màu bắt đầu từ slot số: 0001 = 1 * 16 = $10. Palette của mảng (Tile) mang giá trị C402 sẽ có 16 màu bắt đầu từ slot $10 đến slot $20. Trong mảng (Tile) đó, pixel nào có màu số mấy phụ thuộc vào giá trị dữ liệu trong Tileset, do người dùng tự quy định.
 


Thứ Bảy, 30 tháng 9, 2017

[Nioh]Nội dung patch 1.19


Ngay sau khi ra mắt patch 1.18 với nhiều thay đổi quan trọng thì Kōei Tecmo đã cập nhận bản patch 1.19 với một số thay đổi, có lẽ là khá ít và khá nhỏ nhưng cũng đủ ảnh hưởng tới nhiều người. Cụ thể:

Sửa lỗi:

-  Trường hợp người chơi trở thành Marebito vào Vô gián ngục lại tốn 01 chén Choko vỡ. KT cung cấp lại 03 chén để bù cho người chơi.
- Nhận được Item "tóc Âm dương sư" với số lượng 0 sau khi clear mission "Samurai cuối cùng". KT bù 01 cho ai đã nhận được 00.
 - Địa hình mission "Samurai cuối cùng" có chỗ nếu rơi vào đó sẽ không di chuyển được.
- Làm theo một trình tự nhất định sẽ khiến không thay đổi được Thủ hộ linh bên ngoài Vô gián ngục.
- Tính năng tấn công mạnh (tam giác) của Ōdachi bị thay đổi khi chọn tuyệt kỹ "Đột phá" trong phần Customize.
- Không hủy được thông điệp xác nhận khi rèn "Linh thiết địa kim", món Item tích trữ Amrita.
- Chiêu "Đột phá" của Ōdachi tốn nhiều khí hơn bình thường.
- Một số lỗi nhẹ khác.

Thứ Sáu, 29 tháng 9, 2017

[Asm]Lập trình Snes bài 1



(Tham khảo video trên và xem phần hướng dẫn bên dưới)

Hướng dẫn lập trình cho máy Snes bằng ngôn ngữ Assembly 65816

Bài 1: chuẩn bị môi trường + format

1.1. Mở đầu

Trong các ngôn ngữ bậc cao như C, C++ hay đối với các loại CPU cao cấp như x86, bài vỡ lòng luôn là viết dòng chữ "Hello World" ra màn hình.Việc in dòng chữ này ra màn hình rất đơn giản, chỉ gồm 1 đến vài dòng code là có thể thực hiện được.

Thực ra thì quá trình in dòng chữ "Hello World" ra ngoài màn hình không hề đơn giản như nhiều người lầm tưởng. 

Đây là ưu điểm và cũng chính là nhược điểm của ngôn ngữ bậc cao. Nó giúp đơn giản hóa mọi việc phức tạp, nhưng cũng chính vì thế mà người học ở giai đoạn đầu không thể hiểu sâu vào bản chất của vấn đề. Để in được dòng chữ "Hello World" thì máy tính phải trải qua nhiều công đoạn khác nhau, nhưng phần lớn các công đoạn đều do máy tự thực hiện nhờ bộ thư viện có sẵn, nên người học tưởng chừng như nó chỉ thực hiện mỗi một vài lệnh do họ viết ra. Chính vì vậy người học gần như không thể hiểu được những gì mình đang làm trong giai đoạn đầu.

Ngược lại, các loại CPU đời cũ như dòng 65816 dùng cho máy Snes của hãng Western Design Center (WDC) sản xuất vào thập niên 1980 không có những tính năng "tự động" như x86 sau này. Người dùng phải tự làm hết mọi công việc và máy (CPU) chỉ làm nhiệm vụ đơn giản là làm theo những chỉ thị (dòng code) của người dùng. Để đạt hiệu quả cao đối với CPU hiệu năng thấp, người ta buộc phải dùng đến ngôn ngữ Assembly, thứ ngôn ngữ gần với ngôn ngữ nhị phân nhất, thứ duy nhất CPU có thể "hiểu" được. Vì vậy mà việc lập trình cho máy Snes, cũng như các hệ máy console đời cũ khác luôn được cho là cực nhọc và khó khăn hơn khi lập trình bằng ngôn ngữ bậc cao như C hay VB cho CPU x86. Nhưng cũng chính vì phải làm mọi việc nên người học dễ dàng hình dung được sâu sắc hơn về cấu trúc, kiến trúc cũng như cách làm việc của CPU đối tượng.

Loạt bài này hướng dẫn các kỹ thuật lập trình cho máy SNES (hay còn gọi là SFC ở Nhật) từ những kiến thức căn bản đến nâng cao.
Vì những lý do nêu trên, nên bài vỡ lòng không phải là bài viết dòng chữ "Hello World" ra màn hình. Để làm được việc này thì trước đó cần format để máy Snes có thể hoạt động đúng chức năng.


1.2. Những thứ cần chuẩn bị:

- Phần mềm soạn thảo văn bản bất kỳ. Có thể dùng Notepad có sẵn trong Windows. Khuyên dùng EmEditor hoặc Notepad +. Mọi nội dung code sẽ được gõ vào đây.
- Trình biên dịch opcode 65816 thành mã nhị phân để CPU 65816 hiểu được. Có nhiều loại, khuyên dùng xkas.
- Phần mềm Hex editor bất kỳ.
- Phần mềm Lunar Address để chuyển đổi địa chỉ Snes sang địa chỉ PC. Nếu thông thạo cách chuyển đổi thì có thể bỏ qua phần mềm này.
- Phần mềm Tile Editor bất kỳ. Chủ yếu để tạo dữ liệu đồ họa.
- Kiến thức căn bản về ngôn ngữ 65816. Người viết tự đọc sách mà có. Tài liệu ngày nay không hề thiếu.
- Kiến thức căn bản về phần cứng của máy Snes, chủ yếu là hiểu về các Register, Vram, SPC,.... Tài liệu không hề thiếu.
- Phần mềm Debugger bất kỳ. Khuyên dùng Geiger's Snes9x vì tiện lợi. Chủ yếu để thực thi và kiểm tra code, phát hiện chỗ sai.

Tất cả những thứ trên đều có thể tìm dễ dàng qua trang world wide web  http://wwww.GOOGLE.com

1.3. Chuẩn bị môi trường:

- Tạo một Folder với tên bất kỳ
- Đặt xkas vào Folder này
- Tạo file bất kỳ, có thể đổi thành định dạng máy Snes (giả lập/Debugger) đọc được là .smc hoặc .sfc. Có thể để bất cứ định dạng gì.
- Tham khảo cách dùng xkas trong file readme. (tạo file .bat có nội dung "xkas.exe -o sample.smc code.asm", khi thực thi thì xkas sẽ biến mọi dòng code trong code.asm thành mã nhị phân vào trong sample.smc)
- Tùy vào phiên bản xkas mà cách khai báo trong code.asm có thể khác nhau. Luôn phải khai báo Rom đối tượng là LoRom hay HiRom. Ở đây ví dụ với LoRom.

1.4. Header:

Nhiều người quen thuộc với Rom Snes cho rằng header là $200 (512) byte đầu tiên của Rom. Thực ra không phải. Đó chỉ là phần header vô thưởng vô phạt mà các công cụ dump (trích xuất) từ Catridge thành file để chạy trên giả lập. Có thể dùng Hex editor xóa đi $200 (512) byte này.

Header thực sự của Rom Snes luôn nằm ở một vị trí cố định trong Rom do hãng Nintendō quy định. Khi máy Snes nhận Rom, đầu tiên nó sẽ tìm đến địa chỉ này và đọc thông tin tại đây. Đó là lý do vì sao máy Snes (hay giả lập Snes) cho biết chính xác tên, loại Rom, checksum của từng Rom khác nhau.

Header thật sự của Rom nằm ở địa chỉ $FFB0 (tương đương với $7FB0 địa chỉ PC đối với LoRom và $FFB0 địa chỉ PC đối với HiRom). Địa chỉ PC là địa chỉ ta nhận thấy được khi mở Rom bằng Hex Editor trên PC.

Thành phần của Header theo thứ tự lần lượt như sau, bắt đầu từ $FFB0:

- 2 byte mã sản xuất do Nintendō quy định. Trường hợp là Rom tự viết thì có thể điền 2 số thập lục bất kỳ.
- 4 byte mã game. Có thể điền 4 chữ cái bất kỳ.
- 7 byte cố định $00.
- 1 byte mô tả kích thước Ram mở rộng. Điền $00 nếu Rom chỉ dùng phần Ram sẵn có của máy Snes như phần lớn trường hợp.
- 1 byte mô tả phiên bản đặc biệt. Phần này dành cho các mục đích đặc biệt như bảo vệ bản quyền. Thường để $00. Các số $01, $03, $05, $06, $07 tương đương với kích thước Ram mở rộng 16Kbit, 64Kbit, 256Kbit, 512Kbit, 1Mbit.
- 1 bye mô tả loại Catridge (Rom) để phân biệt Catridge này với Catridge khác cùng loại. Thường để $00.
- 21 byte mô tả tên Rom (game) chẳng hạn Final_Fantasy_VIII_FIN hay FIRE_EMBLEM_FINAL_VER.
- 1 byte mô tả Map mode, chính là tốc độ của CPU. $20 cho mode 20, 2.68 MHZ (tốc đồ thường, còn gọi là Slow Rom), $35 cho mode 25 (3.58 MHZ hay còn gọi là HiRom),...
- 1 byte mô tả kích thước Rom. $09 cho Rom có kích thước 3 ~4 M Bit, $0A cho kích thước 5~8 M Bit, $0B cho kích thước 9~16 M Bit, $0C cho kích thước 17~32 M Bit và $0D cho kích thước 33~64 M Bit.
- 1 byte cho kích thước Sram. $00 không dùng Sram, $01 cho 16K Bit, $03 cho 64K Bit, $05 cho 256K Bit, $06 cho 512K Bit, $07 cho 1M Bit.
- 1 byte mô tả thị trường bán của Rom. $00 là Nhật, $01 là Bắc Mỹ, $02 là EU,....
- 1 byte cố định là $33.
- 1 byte miêu tả số phiên bản của Rom.
- 2 byte kiểm tra bù: chính là phép toán NOT của checksum.
- 2 byte checksum. Tổng số byte trong Rom và AND với FFFF. Luôn có 2 byte kiểm tra bù + 2 byte checksum = FFFF.


1.5. Vector:

Vector là các Pointer chỉ đến các bộ ngắt (Interrupt). Chẳng hạn Vector Reset luôn nhảy đến địa chỉ bắt đầy định dạng Snes khi ta bật nguồn, load Rom hay sau khi nhấn nút Reset. Còn Vector NMI nhảy đến các địa chỉ thực hiện chức năng do người dùng định nghĩa mỗi khi tia laser của màn hình quét từ trên xuống dưới, từ trái qua phải hết 224 dòng (kích thước màn hình Snes chuẩn: 256x224).

Mọi vector phải nằm trong địa chỉ  $00:FFE0-$00:FFFF (tiếp nối ngay sau phần Header).

Mọi vector phải chỉ đến vùng dữ liệu trong bank $00. Máy Snes có 2 loại Vector: Native vector và Emulation vector. Mỗi loại gồm lần lượt:

 
- 4 byte Vector chưa dùng
- 2 byte Vector Coprocessor empowerment: dùng với các loại CPU phụ đi kèm.
- 2 byte Vector Program break: vector này nhảy tới địa chỉ xử lý do người dùng định nghĩa khi code BRK được thực thi. Vector này dành cho chức năng Debug16 và không mấy khi dùng đến trong thực tế.
- 2 byte Vector Abort: vector này hủy bỏ lệnh thực thi, bảo toàn trạng thái như trước khi thực thi.
- 2 byte Vector NMI: vector này nhảy đến địa chỉ thực thi chức năng riêng biệt do người dùng định nghĩa vào mỗi kỳ V-blank. Chẳng hạn tại mỗi kỳ V-blank (kết thúc chu kỳ quét của tia laser đi hết chiều dọc màn hình) sẽ kiểm tra nút Pause có nhấn hay không, nếu có thì cho dừng mọi hình ảnh trên màn hình.
- 2 byte Vector Reset: vector này nhảy đến địa chỉ thực thi code đầu tiên của Snes khi khởi động hoặc sau khi nhấn nút Reset. Chú ý là Cpu sẽ nhảy đến địa chỉ do Vector Reset ở chế độ Emulation chỉ định.
- 2 byte Vector IRQ: vector này nhảy đến địa chỉ thực hiện chức năng do người dùng chỉ định vào mỗi chu kỳ nhất định. Chu kỳ này do người dùng định nghĩa qua các Register từ $4208 ~ $420A. Chu kỳ có thể bắt đầu vào đầu, giữa hay cuối mỗi dòng quét của tia laser trên màn hình, tùy vào giá trị của các Register này.

1.6. Format:

Các Register của Snes có đặc điểm là có thể ở trạng thái không ổn định (mang giá trị ngẫu nhiên) vào lúc đầu khi bật nguồn định. Điều này có thể dẫn tới nhiều hiện tượng không mong muốn như nhiễu hình, vỡ tiếng. Vì vậy cần phải định dạng các Vector này để tránh tình trạng trên. Quy trình gồm:

- Tắt màn hình (ghi giá trị 80/8F vào Register $2100)
- Cho các Register về giá trị $00.
- Format càng nhiều Register càng tốt, nhưng ít nhất phải bảo đảm từ $2101~$2133 và từ $4200~$420D.

Dưới đây là đoạn code đơn giản để format các Register tối thiểu này.

format_routine:
    SEP #$20
    REP #$10
    LDA #$80
    STA $2100
    LDX #$0000
    LDA #$00
repeat_format:
    STA $2101,x
    INX
    CPX #$0033
    BNE repeat_format
    LDX #$0000
repeat_format2:
    STA $4200,x
    INX
    CPX #$000D
    BNE repeat_format2
    RTL


1.7. Lặp bất tận:

Đối với các ngôn ngữ bậc cao, luôn có ký hiệu kết thúc chương trình để máy dừng thực thi mệnh lệnh, trở về trạng thái "thả lỏng". Về thực chất, trạng thái "thả lỏng" này chính là vòng lặp bất tận bằng cách nhảy đến chính nó. 
Tuy nhiên máy Snes không thể tự nhảy về trạng thái "thả lỏng" nếu không có sự can thiệp của người viết, dẫn đến crash chương trình sau khi thực hiện xong các code bên trên. Vì nó không hiểu cần phải làm gì tiếp theo nên ta cần phải hướng dẫn nó.


abc:
JMP abc

hoặc

def:
BRA def

đều cho kết quả nhảy đến chính nó, khiến máy luôn ở trạng thái hoạt động. Và đây cũng là trạng thái đúng khi kết thúc một chức năng, một chương trình.



1.8. Đổi màu màn hình:

Đây mới chính là "Hello World" của lập trình Snes. Việc đổi màu được thực hiện qua 2 Register:

- $2121: ghi giá trị vào đây một lần. Register này chỉ thứ tự của slot màu của layer Background. 
- $2122: ghi giá trị vào đây hai lần. Tùy vào giá trị được ghi vào Register này mà màn hình sẽ có màu khác nhau. Ghi $00 hai lần vào $2122 sẽ cho màn hình màu đen, ghi $FF hai lần vào $2122 sẽ cho màn hình màu trắng.
 
Tuy nhiên trước khi có thể thấy màu sắc màn hình thay đổi thì cần phải "bật" nó lên vì màn hình đã bị "tắt" trong quá trình Format. Register quản lý bật tắt màn hình là:

- $2100. Các giá trị từ $00 đến $0F sẽ bật màn hình với 15 cấp độ sáng từ tối nhất ($00) đến sáng nhất ($0F).

Bài sau sẽ nói kỹ hơn về màu sắc và layer Background.




Thứ Ba, 26 tháng 9, 2017

[Nioh]Vô gián ngục



Một kiểu chơi mới trong bản cập nhận 1.18 của Nioh là "Vô gián ngục". Đây là màn chơi có cấu tạo gồm nhiều tầng, mỗi tầng gồm 2 phần là "bỉ ngạn" (bờ bên kia) và "thử ngạn" (bờ bên này) của địa ngục.  Một số đặc trưng của "Vô gián ngục" như sau:







+ Cần có Item "chén Choko vỡ" để có thể xuống địa ngục. Đánh màn "Marobashi" để có Item này. + Mỗi tầng với boss chính nằm "thử ngạn" (bờ bên này)
+ Sau khi hạ xong boss, có thể chọn đi tiếp tầng tiếp theo của địa ngục hoặc quay về (kết thúc màn chơi).
+ Mỗi màn đều có 4 hiệu ứng bất lợi bất kỳ cho người chơi (chậm động tác, khí lực hồi phục chậm, không dùng được vũ khí tầm xa, không dùng được Item, màn chơi có lửa,....)
+ Tương đương với 4 hiệu ứng bất lợi là 4 màn phụ ở "bỉ ngạn" (bờ bên kia). Người chơi có thể trực tiếp đánh boss ở "thử ngạn" (bờ bên này) với 4 hiệu ứng bất lợi, hoặc clear 4 màn ở "bỉ ngạn" tương ứng để giải trừ các hiệu ứng bất lợi này.
+ Một số nhân vật như Miyamoto Musashi, Sasaki Kojirō, Sakata Kintoki,... trở thành boss phụ ở các màn phụ ở "bỉ ngạn".
+ Số tầng địa ngục tương ứng với mức độ khó đang chơi. Với "Satori no michi" (Way of the Demon) thì địa ngục có 30 tầng. Điều kiện để mở các tầng tiếp theo là clear chế độ chơi "Nioh no michi".
+ Không thể dùng nến chiêu linh hay gọi Thủ hộ linh từ miếu. Chỉ có thể gọi Thủ hộ linh quay về sau khi "lạc mệnh" (chết) là dùng Chuông chiêu linh. Đây là món Item chỉ drop ở các tầng địa ngục.
+ Có thể gọi thêm 2 Marebito để cùng đánh các tầng địa ngục.
+ Có thể lựa chọn bắt đầu địa ngục từ tầng số mấy.
+ Không thể dùng Tiên dược (Elixir) để hồi phục HP ở địa ngục. Chỉ có thể dùng "Linh mệnh đơn".
+ Các tầng địa ngục drop Item màu tím nhạt, gọi là "Tokoyo no shina" (vật phẩm cõi âm). Tại thời điểm nhặt được, người chơi không thể trang bị và không thể biết được tính năng của những món đồ này. Chỉ khi kết thúc "Vô gián ngục" thì các Item "Tokoyo no shina" biến thành Item bình thường. Lúc đó mới rõ tính năng của nó.
+ Miếu ở "Vô gián ngục" có chức năng biến Item thường thành "Tokoyo no shina". Người chơi phải tốn Amrita (khá nhiều, tùy thuộc vào level của món đồ) và Item "giọt Tokoyo" để biến.
+ Item "Tokoyo no shina" càng được mang theo qua nhiều tầng địa ngục thì khi trở về dương thế, nó sẽ biến thành Item bình thường càng mạnh.

[Nioh]Chi tiết về Update 1.18



Vài phút thử nghiệm "Vô gián ngục" trong patch 1.18. Iai đã mất lợi thế đáng kể.

Từ ngày 26/09/2017, Kōei Tecmo đã cập nhận Nioh lên phiên bản 1.18 với nhiều thay đổi. Cụ thể như sau (bản tiếng Nhật):

◆Story mới: thêm phần "trận Ōsaka mùa hè"
※Để chơi được  "trận Ōsaka mùa hè" thì cần phải clear các màn chính của game

◆Thêm độ khó mới: "Niō no michi". Đây là độ khó cao nhất cho tới thời điểm hiện tại. Trước đó có các độ khó theo trình tự từ thấp lên cao: Samurai no michi (con đường của Samurai - Way of the Samurai), Kyōsha no michi (con đường của cường giả - Way of the Strong), Shura no michi (con đường của A Tu La - Way of the Demon), Satori no michi (con đường giác ngộ - Way of the Wise). Trong chế độ chơi "Niō no michi" các chỉ số + của vũ khí, áo giáp, chỉ số Level của nhân vật, Level của Thủ hộ linh đều được nâng cao.

◆Thêm nhiệm vụ đặc thù "Vô gián ngục" (tiếng Anh: Abyss)
+ Chỉ cần mua 1 trong 3 DLC và clear phần chính của game là có thể chơi nhiệm vụ này.
+ Có thể gọi thêm 2 Marebito để cùng chơi trong Vô gián ngục.
+ Nếu "lạc mệnh" (chết) trong trạng thái không có Thủ hộ linh thì sẽ thoát khỏi "Vô gián ngục".
+ Về cơ bản thì đây là địa ngục không đáy. Mỗi một tầng là một boss. Đánh xong mỗi boss đều có lựa chọn xuống tầng tiếp theo hay quay về.
+ Có đồ trang bị "Tokoyo no shina" (常世の品, vật phẩm của cõi âm), càng tiến sâu thì "Tokoyo no shina" khi mang trở về càng có tính năng tốt, độ hiếm càng cao.
+ Trong miếu có thêm chức năng biến đồ thường thành "Tokoyo no shina".


◆Thêm Thủ hộ linh mới:
+ Xà mục điệp (bướm mắt rắn)
+ Cửu vĩ hồ (cáo 9 đuôi)


◆Thêm vũ khí, giáp mới

◆Thêm skin nhân vật mới:
+ Maria
+ Toyotomi Hideyori

◆Thêm danh hiệu và Trophy mới

◆Thêm hiệu ứng, ân sủng của set đồ
◆Thêm skill mới cho Samurai, Ninja và Âm dương thuật
◆Thêm Item mới
◆Thêm điệu bộ mới
◆Thêm thế lực võ gia mới:
+ Hosokawa
+ Tsugaru
+ Utsunomiya

◆Thêm chức năng mới:
+ Có thể yêu cầu thợ rèn thêm 4 set Shortcut cho Item --> lên đến 16 món Item có thể mang theo người
+ Thêm chức năng tăng số bằng cách nhấn R1.R2 ở màn hình "năng lực khai hoa" (tăng Level)
+ Thêm Icon "đã vào suối nóng" trong phần thông tin nhiệm vụ giúp người chơi biết được mình đã vào suối nóng trong những màn có suối hay chưa.

◆Điều chỉnh
+ Thay đổi chủng loại địch ở các nhiệm vụ từ vùng Kinki ~ vùng Ōmi trong chế độ "Samurai no michi"
+ Thay đổi điều kiện mở nhiệm vụ mới trong chế độ chơi "Shura no michi" và "Satori no michi"
+ Tặng Item khi đạt 100% nhiệm vụ ở các chế độ chơi
+ Tăng lượng Amrita đạt được ở các chế độ chơi "Kyōsha no michi", "Shura no michi", "Satori no michi"
+ Tăng chỉ số + của Thần khí ở vùng Đông Bắc, Ōsaka (DLC 1+2) trong chế độ chơi "Samurai no michi"
+ Tăng chỉ số + của Thần khí trong chế độ chơi "Kyōsha no michi", "Shura no michi", "Satori no michi"
+ Tăng lượng Amrita nhận được khi cúng dường Item trên 150 level
+ Giảm tiền kết hợp Item (Tama-awase, Soul matching) ứng với level của Item
+ Khi sử dụng Item "đá mài" có thể tăng chỉ số quen dùng (familiar) của vũ khí, thêm hiệu ứng giải trừ trạng thái bất lợi "vô hiệu hóa vũ khí"
+ Khi sử dụng Item "keo" có thể tăng chỉ số quen dùng (familiar) của giáp, thêm hiệu ứng giải trừ trạng thái bất lợi "vô hiệu hóa giáp"
+ Thêm hiệu ứng kéo dài thời gian "đỡ kịp lúc" của tuyệt kỹ "Hoạt nhân kiếm" của Katana
+ Giảm tiêu hao khí lực của Ōdachi khi dùng các chiêu "Shio kaze" và "Yū kaze" khi set tuyệt kỹ "động trung tĩnh hữu" (trong động có tĩnh)
+ Tăng uy lực của chiêu "Tora hashiri" (hổ chạy, chiêu vừa chạy vừa rút kiếm)
+ Tăng hiệu ứng của 6 set đồ
+ Tăng chỉ số phù trợ của các Võ gia (clan): Saitō, Mori, Naoe, Mogami, Saiga, Ukita, Murakami, Torii, Fūma, Mōri
+ Sửa đổi trạng thái có lợi "sát thương x2" thành "tăng lực tấn công đáng kể". Sửa đổi hiệu quả tùy vào điều kiện phát động
+ Giảm thời gian hiệu quả "vô hiệu hóa thương tích"
+ Tăng hiệu quả sát thương cho "tăng sát thương ứng với độ nhẹ của trang bị" đối với trường hợp trang bị chưa đến 10.0
+ Hiệu quả đặc biệt "không lạc mệnh (chết) miễn là không ở trạng thái nguy cấp", khi phát động được đổi thành "không bị địch tấn công" trong một thời gian ngắn
+ Có thể dùng hiệu quả đặc biệt "vô hiệu hóa trạng thái có lợi" để tạm thời vô hiệu hóa các trạng thái có lợi vĩnh viễn của địch trong chế độ chơi từ "Shura no michi" trở lên
+ Khi clear nhiệm vụ từ chế độ chơi "Satori no michi" trở lên, nếu nhận được phần thưởng là Thần khí thì có thể đổi thành Thần bảo với một tỷ lệ nhỏ
(Nhận được Thần bảo thay vì Thần khí khi clear nhiệm vụ, nhưng tỷ lệ thấp)
+ Từ "Satori no michi" trở lên, Honda Tadakatsu sẽ không bị bật lùi nếu bị tấn công trong khi đang xuất tuyệt chiêu
+ Điều chỉnh tính năng Item Nhẫn thuật của Kirigakure Saizō
+ Điều chỉnh lực đánh của yêu quái Namahage
+ Sửa đổi bug tồn tại trong bản cũ


Tóm tắt, phiên bản cập nhật 1.18 của Nioh có 4 điểm quan trọng nhất:

+ Có độ khó mới (Niō no michi)
+ Có màn chơi mới (Vô gián ngục)
+ Có thể nhận được Thần bảo khi kết thúc nhiệm vụ
+ Kiểu build IAI bị thiệt hại nặng vì mất tính năng "sát thương x2" và quan trọng nhất là rút ngắn thời gian "vô hiệu hóa thương tích"

Thứ Hai, 25 tháng 9, 2017

[Nioh]Yêu quái Onmoraki

 Trong DLC #3 của Nioh có một loại yêu quái mới. Đó là Onmoraki với hình dạng của một con chim lớn.
Kōei Tecmo đã dựa trên các thư tịch cổ để dựng nên hình tượng yêu quái này.




 Âm ma la quỷ theo mô tả của họa sĩ Toriyama Sekien




Tạo hình Âm ma la quỷ trong game Nioh

Onmoraki (陰摩羅鬼 - Âm ma la quỷ) là một loại yêu quái, quái điểu được nhắc tới trong cổ thư Trung Hoa và Nhật Bản. Loại yêu quái này được cho là sinh ra từ khí của xác mới chết, do xác chết không được cúng kiến mà thành. Onmoraki (Âm ma la quỷ) có khi còn xuất hiện ở chỗ sư sãi biếng nhác đọc kinh văn.

Họa sĩ cổ điển Toriyama Sekien đã vẽ lại quái điểu này trong tập tranh "Konjaku Gazu zoku Hyakki" (tập tranh vẽ bách quỷ xưa nay, phần 2) theo lời mô tả từ cổ thư Trung Hoa "Thanh tôn lục" với hình dáng của chim, toàn thân màu đen, mắt như đốm lửa, đập cánh cất tiếng hót cao lanh lảnh.
Trong cổ thư "Thanh tôn lục" có đoạn viết như sau về quái điểu Âm ma la quỷ này. Đời nhà Tống, ở Trịnh châu có người tên Thôi Tự Phúc. Một lần nọ khi đang nằm ngủ trên bảo điện của một ngôi chùa ngoài kinh thành thì giật mình tỉnh dậy vì có tiếng quở mắng. Định thần nhìn lại thì thấy một quái điểu như mô tả, khi Thôi bỏ chạy thì quái điểu biến mất. Thôi đem chuyện hỏi tăng lữ trong chùa thì được biết ở đây không có quái điểu nào như vậy, nhưng mấy ngày trước có để tạm xác người chết. Thôi quay về kinh đô, hỏi thăm sư trong chùa ở đây thì được biết đó là Âm ma la quỷ sinh ra từ khí của người mới chết.
Trong tập cổ thư "Taihei Hyakki monogatari" ở Nhật cũng có ghi chuyện tương tự như "Thanh tôn lục". Tại xứ Yamashira (ngày nay là phủ Kyōto) có người tên Takuhei định ngủ trong chùa thì có tiếng gọi dậy. Takuhei thấy con quái điểu, hoảng sợ bỏ chạy, quan sát từ trong bóng tối thì quái điểu biến mất. Takuhei đem chuyện hỏi trưởng lão trong chùa thì được biết theo Đại tạng kinh thì đây là yêu quái Âm ma la quỷ sinh ra từ xác chết để tạm ở chùa gần đó.
Nguồn gốc tên gọi Âm ma la quỷ xuất phát từ "ma la", một thứ ma quấy nhiễu cản trở đường giác ngộ, thêm vào chữ "âm" và "quỷ" để nhấn mạnh rằng đó là loại ma đồng thời cũng là quỷ. Có ý kiến cho rằng đó là hỗn hợp của "âm ma" (chướng ngại) và "la sát quỷ".

Chủ Nhật, 24 tháng 9, 2017

[Nioh]Tên gọi của DLC #3



Kōei Tecmo công bố sẽ tung ra bản DLC #3 cho Nioh. Đây là bản DLC cuối cùng, khép lại hoàn toàn câu chuyện của William Adams. Theo Kōei Tecmo thì bản DLC #3 này sẽ có bối cảnh là chiến dịch Ōsaka mùa hè (bối cảnh DLC #2 là chiến dịch Ōsaka mùa đông) với những màn chơi mới, yêu quái mới, Thủ hộ linh mới, nhân vật mới và một chế độ chơi mới. Cụ thể những cái mới như dưới đây.

+ Chế độ chơi mới: Vô gián ngục (Mukengoku), tên gọi xuất phát từ "Vô gián địa ngục" trong Phật giáo. Đây là tầng thứ 8 của bát đại địa ngục, còn có tên khác là "A Tỳ địa ngục".
+Màn chơi mới: "trận Ōsaka mùa hè", "cổng thành Ōsaka" và "thành Ōsaka".
+ Nhân vật mới: Toyotomi Hideyori (con trai của Hideyoshi, 0:09 trong video) và công nương Yodo (1:02 trong video).
+ Yêu quái mới: Magatsu musha (võ sĩ thảm họa, có lẽ là yêu quái mang hình dạng Ninja Ryū Hayabusa ở 0:34 trong video???), quái điểu Onmoraki (Âm Ma La Quỷ, 0:21 trong video)
+ Thủ hộ linh mới: xà mục điệp (bướm mắt rắn) và cửu vĩ hồ ly (cáo 9 đuôi).




Bản DLC #3 này có giá 1,300 En Nhật + thuế và sẽ được phát hành vào ngày 26/9/2017, tức 10:00 tối ngày 25/9/2017 theo giờ Việt Nam.

Bản DLC #3 có tên "Genna Embu" (元和偃武 - Nguyên Hòa uyển vũ) và được dịch sang Anh ngữ là "Bloodshed end" (tạm dịch: chấm dứt đổ máu).

Genna (Nguyên Hòa) là niên hiệu Nhật Bản kéo dài từ tháng 7 năm 1615 đến tháng 2 năm 1624.
Embu (uyển vũ) nghĩa là chấm dứt chinh chiến, bắt đầu thời thái bình. Cụm từ này xuất phát từ thiên "Vũ Thành" trong "Chu thư", một phần của "Thư kinh", một pho thư tịch Trung Hoa thời cổ đại.
Cụm từ nguyên bản trong sách:
"vương lai tự thương, chí vu phong nãi yển vũ tu văn" (bậc Vương giả tự mua bán, đến chỗ giàu có, cất vũ khí vào kho mà chăm lo chữ nghĩa, sách vở).

Tại Nhật, cụm từ Genna Embu chỉ việc Mạc phủ Tokugawa tiêu diệt chủ thành Ōsaka là họ Hashiba (họ Toyotomi) trong trận Ōsaka mùa hè, kết thúc xung đột quân sự kéo dài gần 150 kể từ loạn Ōnin để mở ra một thời thái bình thịnh trị kéo dài gần 300 năm. 
Trận Ōsaka mùa hè bắt đầu từ tháng 3 năm Keichō thứ 20 (1615) và kết thúc vào đầu tháng 7 cùng năm. Sau đó Mạc phủ Tokugawa đổi niên hiệu Keichō thành niên hiệu Genna (Nguyên Hòa), tuyên bố đã kết thúc bình định thiên hạ.
Về mặt lịch sử, Genna Embu được xem như dấu mốc kết thúc cho thời Chiến quốc ở Nhật.

Thứ Năm, 21 tháng 9, 2017

[Nioh]Danh hiệu Kiếm thánh

   
Cách lấy danh hiệu "Kiếm thánh" trong Nioh

I. Giới thiệu về danh hiệu

Nhiều người chơi không để ý rằng trong Nioh có hệ thống gọi là "danh hiệu". Có thể xác nhận bằng menu ở touch pad. Đúng như tên gọi, đây là hệ thống cho người chơi những danh hiệu khác nhau khi đạt được những điều kiện nhất định trong game. Chẳng hạn, nếu người chơi đạt được 10,000 sát thương thuộc tính lửa thì sẽ nhận được danh hiệu "người mượn sức mạnh của lửa"; nếu thắng được yêu quái Hi-no-enma ở màn "trong bóng tối" mà không nhận bất kỳ thương tích nào từ yêu quái này thì sẽ nhận được danh hiệu "người thắng Hi-no-enma hoàn toàn";....




Màn hình danh hiệu


Trong Nioh có 3 loại danh hiệu: A hình (Agyō), Hồng hình (Ungyō) và Đấu giả. Danh hiệu đấu giả liên quan tới các điều kiện đấu online, trong khi 2 danh hiệu còn lại là các điều kiện chơi offline.


II. Danh hiệu để làm gì?

 Khi đạt được một danh hiệu, người chơi sẽ nhận được số điểm thanh danh tương ứng với độ khó của danh hiệu đó. Khi điểm thanh danh vượt quá mức định sẵn thì người chơi sẽ được lên thứ hạng thanh danh. Lúc này người chơi nhận được điểm ân huệ.

 
Màn hình điểm ân huệ

Tương ứng với 2 loại danh hiệu, điểm ân huệ cũng chia làm 2 loại là A hình (Agyō-tượng mở miệng) và Hồng hình (Ungyō-tượng ngậm miệng) tương đương với 2 pho tượng Kim can lực sĩ, hay còn gọi là Niō (Niou, Nioh).
Người chơi có thể dùng điểm ân huệ để phân phối vào các chỉ số có lợi cho mình. Cụ thể như dưới đây.

a. Điểm A hình 
Mỗi điểm ân huệ chỉ tăng được 01 chỉ số.
 + Âm dương thuật, thuật lực
 + Sát thương yêu quái khi cận chiến
 + Amrita nhận được
 + Kháng Tokoyo (không gian của yêu quái, bên Anh ngữ gọi là "yokai realm")
 + Thể lực (HP)
 + Giảm sát thương thuộc tính
 + Thời lượng vũ khí Tsukumo (bên Anh ngữ gọi là "living weapon")
 + May mắn

b. Điểm Hồng hình
Mỗi điểm ân huệ chỉ tăng được 01 chỉ số.
 + Nhẫn thuật, thuật lực
 + Sát thương người khi cận chiến
 + Khí lực
 + Độ lỳ (không bật lùi khi bị đánh)
 + Tiền nhận được
 + Giảm sát thương khi rơi từ cao
 + Hiệu quả của thuốc hồi phục thể lực
 + Tỷ lệ drop

Trường hợp muốn lấy lại các điểm ân huệ đã dùng, để phân bổ lại từ đầu thì dùng món Item "tập công án" như ảnh dưới đây.







III. Danh hiệu Kiếm thánh

"Kiếm thánh" là một trong những danh hiệu khó đạt nhất trong Nioh. Điều kiện là không được trang bị bất cứ vũ khí gì, dùng tay không đánh bại 6 vị sư phụ trong submission "Marobashi".




Một số điểm mấu chốt để đạt danh hiệu này:

- Không trang bị bất kỳ vũ khí gì
- Không dùng bất cứ Item gì
- Có thể mặc giáp
- Nên trang bị những bộ giáp có option tăng sát thương đánh tay
- Dùng tuyệt kỹ "Shiraha-dori" (bắt kiếm tay không)
- Trang bị Thủ hộ linh Kara-jishi (Sư tử Tàu) để hồi HP khi dùng tuyệt kỹ thành công; trang bị Thủ hộ linh chồn Narikama-danuki để hồi HP khi nguy cấp.

IV. Giải thích về Shiraha-dori

Shiraha-dori, hay gọi đầy đủ là Shinken Shiraha-dori (bắt kiếm) là tuyệt kỹ có thật trong kiếm thuật Nhật Bản, dùng 2 tay để chặn lưỡi kiếm bổ xuống của địch, lật ngược thế trận trong nháy mắt. Đây là tuyệt kỹ có độ khó rất cao và gần như không thể thực hiện trong thực tế.
Tuyệt kỹ này được cho là do Yagyū Muneyoshi (đọc về nhân vật này tại đây) công án mà sáng tạo thành. 




Yagyū Muneyoshi, hiệu là Sekishūsai qua nét vẽ của họa sĩ Inoue Takehiko trong Manga "Vagabond"

Trong tác phẩm "Miyamoto Musashi", nhà văn Yoshikawa Eiji viết về thời trai trẻ của Yagyū Muneyoshi và người bạn thân giao Hōzō-in In-ei như sau.

"Binh pháp trị đời" của ông cũng chính là "binh pháp tu thân". Sekishūsai (Muneyoshi) luôn tâm niệm rằng tất cả đều là "nhờ ơn của ân sư". Ông không bao giờ quên ơn sư phụ Ise-no-kami Nobutsuna.
Câu cửa miệng của ông là "ngài Ise chính là thần bảo hộ của nhà Yagyū".
Đúng như lời nói, ông luôn để ấn khả kiếm phái Shinkage-ryū do sư phụ Ise-no-kami truyền thụ cùng 4 cuốn cổ mục lục trong thư phòng. Ngày giỗ của thầy, ông không bao giờ quên dâng hương đảnh lễ.
Bốn cuốn cổ mục lục ấy còn gọi là "mục lục tranh", là tập tranh vẽ các thế kiếm bí truyền của phái Shinkage-ryū cùng chú thích do đích thân Ise-no-kami chấp bút.
Khi về già, thỉnh thoảng Sekishūsai giở tập sách, lòng bồi hồi nhớ lại chuyện xưa.

- Tranh ngài vẽ quả là diệu thủ.

Bức tranh ấy luôn làm ông xúc động một cách lạ lùng. Tranh vẽ hai nhân vật hào sảng mang phong thái của người thời Tenmon, cầm Tachi giao đấu với nhau. Mỗi lần ngắm bức tranh này, lòng ông cảm thấy như có sương giăng dưới mái hiên sơn trang.

Ise-no-kami đến thành tiểu thành Yagyū khi Sekishūsai tuổi đời chừng 37, 38, dã tâm binh mã bồng bột.
Bấy giờ Ise-no-kami dẫn theo Hikida Bungorō và lão đệ tử Suzuki Ihaku đi chu du khắp các xứ để cầu tìm binh pháp gia tỷ võ. Theo lời giới thiệu của Kitabatake Tomonori, ông đến tìm Hōzō-in In-ei bấy giờ hay ra vào tiểu thành Yagyū.

- Đúng là Hōzō-in có đến đây.

Sekishūsai, bấy giờ xưng là Muneyoshi, nói với Ise-no-kami. Đó là cơ duyên.
Ise-no-kami tỷ thí với Muneyoshi 3 ngày.
Ngày đầu tiên, khi Muneyoshi toan đánh thì

- Ta đánh đây.

Ise-no-kami đánh vào đúng chỗ như đã nói.
Ngày thứ 2, Muneyoshi cũng bại trận như vậy.
Lòng tự tôn của Muneyoshi bị tổn hại nặng nề, bèn nghiền ngẫm công phu, tập trung tinh thần để thay đổi thế đánh trong ngày hôm sau.

- Vậy tệ quá. Ta đánh như vầy.

Ise-no-kami nói rồi đi kiếm vào đúng chỗ đã chỉ.
Muneyoshi buông đao chấp ngã, nói:

- Lần đầu tiên con được thấy binh pháp.

Từ đó nửa năm về sau, Muneyoshi khẩn khoản nài Ise-no-kami lưu lại tiểu thành Yagyū, truyền dạy binh pháp cho mình.
Khi Ise-no-kami chuẩn bị rời đi thì có nói:

- Binh pháp của ta vẫn còn có chỗ chưa hoàn thiện. Con hãy còn trẻ, hãy hoàn thiện chỗ thiếu sót của ta.

Nói rồi giao cho Muneyoshi một công án. Công án đó là, "thế nào là vô đao?"
Từ đó về sau, Muneyoshi ngày đêm nghiền ngẫm về cái lý vô đao trong mấy năm, quên ăn quên ngủ.
Về sau, khi Ise-no-kami đến thăm lần nữa thì lúc này mắt ông rực hẳn lên.

- Thế nào rồi.

Hai người toan tỷ thí.

- Mmm!

Ise-no-kami liếc qua,

- Giờ có đấu với con cũng vô ích. Con đã nắm được chân lý rồi.

Nói rồi để lại cho Muneyoshi ấn khả và 4 cuốn mục lục rồi bỏ đi.
Phái kiếm Yagyū-ryū ra đời từ đây. Về già, Sekishūsai Muneyoshi trốn đời ẩn tài nơi hoang cốc cũng là một thuật xử thế của phái binh pháp này.