text:
Đọc bản pdf tại đây (click)
Bạn đã bao giờ chơi một game hack với những yếu tố hoàn toàn mới hay một bản dịch Việt ngữ? Bạn thắc mắc vì sao người ta có thể làm cho nhân vật Mario bay được, trong khi mặc định trong game bình thường là chạy bộ? Câu trả lời là Assembly, hay gọi tắt là Asm. Bài viết này cung cấp cho bạn đọc những kiến thức cơ bản nhất về Asm, thông qua game Fire Emblem 4 Seisen no Keifu trên máy Super Nintendō làm ví dụ. Bài viết cố gắng cô đọng, tóm tắt những kiến thức cần thiết nhất để người (đủ kiên nhẫn) đọc có thể làm theo và tự phát triển nền tảng cho riêng mình.
Hiện nay trên Net có rất nhiều tài liệu về Asm 65816 dành cho hệ máy SFC (SNES) bằng tiếng Nhật, tiếng Anh, tiếng Tây, tiếng Bồ.... nhưng chưa có một tài liệu nào bằng tiếng Việt. Có thể xem đây là tài liệu tiếng Việt đầu tiên về lãnh vực này. Nếu muốn tìm hiểu sâu hơn để hack/dịch game Snes thì có thể tham khảo thêm tài liệu trong các ngôn ngữ kể trên.
I. Cần chuẩn bị
Để theo được bài viết này, bạn cần chuẩn bị một số thứ tối thiểu như sau:
1. Kiến thức về hệ nhị phân (Binary, Bin) và hệ thập lục (Hexadecimal, Hex), kiến thức về bit và byte. Không nhắc lại ở đây vì những bài viết về hai hệ số này đã tràn ngập Google rồi, tôi không tốn thời gian gõ lại làm gì.
2. Lòng đam mê với game SNES. Cái này thì ai trả qua tuổi thơ với SNES thì mặc định là có (:V).
3. Một chút thời gian rãnh. Không nhiều lắm, nhưng đủ để đọc hết bài viết này và làm theo. Có thể chia thành nhiều kỳ, số kỳ không hạn chế, tùy vào độ rãnh háng của bạn.
4. Giả lập kiêm Debugger để chạy game SNES. Trên Net có kha khá, nhưng khuyên dùng Snes9X. Tải về tại đây (click vào).
5. Bản Mộc Đế 4 (Fire Emblem 4 Seisen no Keifu). Dùng được cho bản gốc tiếng Nhật và bản dịch tiếng Việt của Asm65816. Ở đây dùng bản tiếng Việt. Tải về tại đây (click vào)
6. Trình Hex Editor. Có vô vàn, nhưng tôi hay dùng Stirling vì sự tiện dụng của nó. Tải bản tiếng Việt của Stirling tại đây (click vào).
7. Lunar Address, tiện ích chuyển đổi giữa địa chỉ PC và địa chỉ SNES. Tải về tại đây (click vào).
8. Cuối cùng, à chưa phải cuối cùng. Một chút kiên nhẫn. Không cần nhiều lắm, chỉ cần đủ để đọc lại bài này từ đầu chí cuối sau khi đọc hết mà vẫn không hiểu gì.
9. Đây mới là cuối cùng. Cần một bộ óc bình thường như cân đường hộp sữa. Không cần cái đầu quá nhanh như Corei7 hay Qualcom 820, nhưng nếu nhanh được như vậy thì càng tốt. Chỉ cần làm được 5 phép tính cộng trừ nhân chia số có 2 chữ số trong thời gian 1 phút là đủ tiêu chuẩn.
II. Khái quát về Asm 65816
Asm là từ viết tắt của Assembly, tiếng Việt dịch là "hợp ngữ", gọi nôm na là ngôn ngữ máy. Asm là ngôn ngữ bậc thấp mà máy tính (các loại máy nói chung, không nói riêng về "máy vi tính") sử dụng và hiểu được. Nó khá đơn giản, chỉ gồm 2 con số là "0" và "1". Chả còn gì đơn giản hơn. Máy tính vốn dĩ tối dạ và ngu đần, không có trí tuệ. Nó không hiểu được tiếng người, nó không phân biệt được trai gái, không biết đâu là rượu đâu là nước,... Nói tóm lại, ngoài "0" và "1" ra thì nó chả biết gì nữa hết. Điểm cộng duy nhất của máy tính là mặc dù ngu đần nhưng lại tuy u ám không có trí tuệ nhưng lại nhanh trí.
OK? Trí tuệ và nhanh trí là hai khái niệm hoàn toàn khác nhau. Máy tính có thể đếm, cộng trừ nhân chia hàng triệu con số trong nháy mắt, nhanh hơn bất kỳ một con người nhanh trí nào. Nhưng vì không thông minh nên nó cứ ngồi đợi con người ra lệnh, giao việc cho làm. Nếu máy tính mà thông minh thì chắc giờ này tôi đang làm việc nhà cho nó rồi, đâu rãnh mà ngồi đây viết linh ta cho các bạn đọc linh tinh.
Quay trở lại vấn đề, máy tính rất đơn giản. Còn con người thì đẳng cấp hơn nhiều, và cũng phức tạp hơn nhiều. Thế giới của máy tính chỉ có "0" và "1" thì thế giới con người còn có gái gú, rượu chè, hút sách, lừa lọc, giết hại nhau,..... Khi đã quen thuộc với những cái siêu phức tạp như vậy thì dường như chúng ta gặp rất nhiều khó khăn trong việc giao tiếp với thứ đơn giản như cái máy tính.
Cũng giống như hệ thống ngôn ngữ của người lớn thì phức tạp, có thể phát âm rất nhiều âm tiết tinh vi. Trong khi cổ họng của trẻ sơ sinh chỉ có vài từ "ă", "ú" và "â". Vì vậy mà đại đa số người lớn chúng ta không hiểu bọn con nít mới đẻ chúng nói gì, mà phải cần qua người phiên dịch là mẹ chúng. Bà mẹ này vừa hiểu được chúng, vừa hiểu được chúng ta nên trở thành cây cầu nối trong giao tiếp giữa hai bên. Ngôn ngữ Assembly, hay ASM cũng vậy. Nó vừa để con người có thể hiểu được, vừa để máy tính hiểu được.
Ngôn ngữ mà ngày xưa các cụ dùng để giao việc cho máy SNES có tên mã là 65816, 65C816. Gọi túm lại là Asm 65816. Đây là hệ máy 16 bit, vì có Register có độ rộng 16 bit. Nếu muốn hack/dịch game SNES thì kiểu gì cũng phải biết qua ngôn ngữ này. Những khái niệm cơ bản nhất về nó sẽ lần lượt xuất hiện trong bài này.
Điều đầu tiên cần phải biết là CPU 65816 thực hiện tuần tự các mệnh lệnh mà người ta viết sẵn theo thứ tự từ trên xuống, từ trước đến sau.
{Lệnh 1}
{Lệnh 2}
{Lệnh 3}
....
{Lệnh n}
Nó sẽ thực hiện lần lượt đúng như thứ tự trên, rất đơn giản đúng không?
Đầu tiên, mở FE4 bằng Stirling, ta sẽ thấy vô vàn con số ở hệ thập lục.
Những con số này chính các dòng lệnh để CPU thực thi. Mỗi một số thập lục ứng với một mệnh lệnh, và chúng đều có ý nghĩa riêng. CPU của máy 65816 (Snes) có tới 256 lệnh. Một số lệnh chủ yếu sẽ được giới thiệu bên dưới đây.
III. Khái niệm cơ bản
Dưới đây là những khái niệm cơ bản nhất mà bạn cần phải biết khi bước chân vào thế giới 65816.
1. Endian
Endian là thuật ngữ chỉ trật tự sắp xếp byte trong bộ nhớ của máy tính. Có 2 kiểu phổ biến là Big endian và Little endian. Đối với kiểu Big endian thì dữ liệu được xếp theo trật tự thuận, chẳng hạn một chuỗi gồm 4 byte 03 6A 7F 45 thì sẽ được xếp là 03 6A 7F 45. Còn đối với kiểu Little endian thì trật tự này được xếp ngược là 45 7F 6A 03. Các hệ máy console cũ như NES, SNES, PlayStation, Megadrive... thì sử dụng kiểu Little endian, còn các hệ console đời mới như PlayStation 3, Xbox 360... đều sử dụng kiểu Big endian. Xác định kiểu endian là một khâu quan trọng trong việc hack dữ liệu.
2. Register
Có thể nói, linh hồn của một phần cứng chính là các Register. Chữ "Regist" mang nghĩa "duy trì". Register là thứ duy trì một cái gì đó. Trong ngôn ngữ Asm thì Register duy trì các giá trị, cụ thể là các biến số.
Phần cứng 65816 có nhiều Register, trong số đó hay gặp là: A (Accumulator), X và Y (Index Register), DB (Data bank) và P (Status Register, hay còn gọi là Flag). Ngoài ra còn có PC (Program Counter) Register giữ địa chỉ của lệnh hiện tại, D (Direc page) Register, S (Stack) Register. Trong số này thì chỉ có A, X, Y là có thể chuyển đổi giữa 2 chế độ: 8 bit và 16 bit để giữ byte bằng cách set và reset các bit trong P Register. P là Register 8 bit, theo thứ tự là:
n: Negative
v: Overflow
m: Memory/Accumulator Select
x: Index Register select
d: Decimal
i: Interrupt
z: Zero
c: Carry
Từng bit khi được set (trạng thái "1") hay reset (trạng thái "0") thì sẽ cho tác dụng khác nhau. Chẳng hạn, nếu bit thứ 5 của P Flag được set (1) thì A Register là 8 bit, còn nếu là reset (0) thì A có chứa được giá trị 16 bit. Tương tự, X và Y Register chứa được giá trị 8 hay 16 bit phụ thuộc vào trạng thái của bit thứ 4 của P Flag.
3. Addressing mode
Trong ngôn ngữ Asm, có nhiều cách để chỉ định địa chỉ, và tất cả những cách này đều được gọi chung là Addressing mode. Chẳng hạn, lệnh LDA #$20 có ý nghĩa khác với LDA $20.
Lệnh đầu tiên là tải giá trị $20 (thập lục) vào A Register, còn lệnh sau tải giá trị (biến số) tại địa chỉ $20 vào A Register.
a. Immediate: kiểu định địa chỉ này được xác định với một giá trị cụ thể. Chẳng hạn
LDA #$FF ;tải giá trị $FF vào A
SEP #$30 ;đưa giá trị $30 vào P Flag
b. Direct: địa chỉ đích được hình thành bằng cách thêm một địa chỉ 8 bit vào Direct page Register (D). Chẳng hạn:
LDA $20 tải giá trị (biến số) tại địa chỉ $20
Nếu D = $1000 thì CPU sẽ đọc một byte (nếu A 8 bit) từ địa chỉ $1020.
c. Absolute: địa chỉ đích được hình thành bằng cách thêm một địa chỉ 16 bit vào DBR. Chẳng hạn:
DBR: $80
LDA $901C
Thì CPU sẽ tải một byte từ địa chỉ $88: 901C vào Accumulator (A).
d. Absolute Long: địa chỉ đích chính là địa chỉ được thể hiện trong lệnh.
LDA $808000 ; tải một byte từ địa chỉ $80:8000 vào A
LDA $FF9090 ; tải một byte từ địa chỉ $FF:9090 vào A
d. Accumulator: địa chỉ đích chính là A Register.
INC ; tăng giá trị của A lên 1
e. Direct Indirect Indexed: đây chính là nơi các Index Register (X và Y) vào cuộc. CPU sẽ tải 2 byte (16 bit) từ địa chỉ Direct page để tạo thành một địa chỉ nền kết hợp với DBR. Cuối cùng, giá trị của Y được thêm vào địa chỉ nền kia để tạo thành một địa chỉ 2 byte.
DBR: $80, D: $0020, Y: 0001
Memory dump (các giá trị trong bộ nhớ lúc này):
0030: 30 40 23 22 F4 22 23 1C
0038: 23 2D DD F4 FF FF FF FF
LDA ($10), Y
Sẽ cho địa chỉ sau:
Đầu tiên ta có $10 + giá trị tại D ($0020) là: $10 + $0020 = $0030
Nhìn vào bộ nhớ (Memory), lúc này ta thấy giá trị tại $30 và $31 là 30 và 40.
Do vậy địa chỉ sẽ là: $3040, nhưng vì SNES sử dụng kiểu Little endian nên địa chỉ đúng sẽ là $4030.
Kết hợp với DBR để có địa chỉ nền: $80:4030
Cuối cùng, tính thêm giá trị của Y vào: $80:4030 + $0001 = $80:4031
Như vậy, dòng lệnh trên
LDA ($10), Y
sẽ tải một byte từ địa chỉ $80:4031 vào trong A. Thường thì kiểu định địa chỉ này được dùng trong vòng lặp, khi Y được gia tăng mỗi lần để lấy một loạt dữ liệu trong Memory. Chẳng hạn
DBR: $80, D: $0020, Y: 0001
Memory dump:
0030: 30 40 23 22 F4 22 23 1C
0038: 23 2D DD F4 FF FF FF FF
LDA ($15), Y
INY
Địa chỉ DP = $0020 + $15 = $ 0035
Địa chỉ nền = DBR:<2 data-blogger-escaped-a="" data-blogger-escaped-byte="" data-blogger-escaped-ch="" data-blogger-escaped-t=""> = $80:2322
Địa chỉ đích = Địa chỉ nền + Y = $80:2323
INY: gia tăng giá trị của Y lên 1
Như vậy, 2 dòng lệnh trên sẽ liên tục tải các giá trị tại $80:2322, $80:2323, $80:2324,... vào A.
Thường thì giá trị tại D Register là 0, cho nên việc tính toán cũng đơn giản hơn.
f. Direct Indirect Indexed Long: kiểu xác định địa chỉ này về cơ bản thì giống kiểu e. Chỉ khác nhau ở chỗ nó sử dụng 3 byte tại địa chỉ DP thay vì 2 byte và không kết hợp với DBR. Ví dụ:
DBR: $80, D: $0020, Y: 0001
Memory dump:
0030: 30 40 23 22 F4 22 23 1C
0038: 23 2D DD F4 FF FF FF FF
LDA [$10], Y
Địa chỉ DP = $0020 + $10 = $0030
Địa chỉ nền = $23:4030.
Địa chỉ đích = địa chỉ nền + Y = $23:4030 + $0001 = $23:4031
g. Direct Indexed Indirect: sau khi tính địa chỉ Direct page, cộng với giá trị tại X. Sau đó lấy 2 byte tại địa chỉ này, kết hợp với DBR để tạo thành địa chỉ đích.
DBR: $80 D: $0020 X: $0004
Memory dump:
0020: FF 00 FF 09 33 33 09 88
0028: 08 76 66 36 D7 23 99 00
LDA ($02, X)
Địa chỉ DP = $02 + D = $0022
Sau đó kết hợp với X
Địa chỉ DP + X = $0026
2 bytes tại $0026 là (09 và 88), đảo ngược (Little endian) thành $8809, cuối cùng kết hợp với DBR:
DBR:$8809 = $80:8809
CPU sẽ tải giá trị tại địa chỉ $80:8809 vào A.
h. Direct Indexed với X: trong kiểu định địa chỉ này thì địa chỉ DP được cộng với giá trị tại X để tạo thành địa chỉ đích. Địa chỉ đích luôn nằm ở bank 0.
D: $0020 X: $0004
LDA $30, x
Địa chỉ DP = $30 + $0020 = $0050
Địa chỉ đích = địa chỉ DP + X = $00:0054
i. Direct Indexed với Y: giống kiểu h. nhưng khác nhau ở chỗ địa chỉ DP cộng với giá trị tại Y để hình thành địa chỉ đích.
j. Absolute Indexed với X: giá trị 2 byte được cộng với X rồi kết hợp với DBR để hình thành địa chỉ đích.
DBR: $80 X: $0001
LDA $8000, X
Địa chỉ đích = DBR:($8000 + X) = $80:8001
LDA $6988, X
Địa chỉ đích = DBR:($6988 + X) = $80:6989
k. Absolute Indexed với Y: giống kiểu j. nhưng thay vì cộng với X thì ở đây cộng với Y.
l. Absolute Long Indexed với X: địa chỉ đích được hình thành bằng cách cộng giá trị tại X với địa chỉ 3 byte.
X: $0001
LDA $808000, X ; tải một byte tại $80:8001 vào A
LDA $589112, X ; tải một byte tại $58:9113 vào A
m. Absolute Long Indexed với Y: giống kiểu l. nhưng thay vì cộng với X thì ở đây cộng với Y.
n. Program Counter Relative: kiểu định địa chỉ này chỉ được dùng trong các lệnh phân nhánh. Giá trị 8 bit được thêm vào PC (Progtam Counter) để tạo thành địa chỉ đích mà lệnh thực thi nhảy đến. Giá trị 8 bit này có phạm vi từ -128 cho đến 127.
BRA $8005 ; phân nhánh sang địa chỉ $8005 trong phạm vi (-128 tới 127)
o. Program Counter Relative Long: giống kiểu n. nhưng phạm vi trong khoảng (0 tới 65535). Chỉ có lệnh BRL và PER dùng kiểu này.
p. Absolute Indirect: địa chỉ đích được hình thành từ 2 byte.
Memory dump:
0000: 90 77 78 00 43 00 00 00
0008: 33 45 12 33 11 11 FF FF
JMP ($0008)
CPU sẽ lấy 2 byte tại $0008 là (33, 32), rồi nhảy sang địa chỉ $4533.
q. Absolute Indexed Indirect: giá trị 2 byte được cộng với X, sau đó 2 byte tại địa chỉ này được dùng để tạo nên địa chỉ đích.
X: 0001
Memory dump:
0000: 90 77 78 00 43 00 00 00
0008: 33 45 12 33 11 11 FF FF
JMP ($0008, X)
Ta có $0008 + X = $0009
Lấy 2 byte từ $0009 = 45 12
$1245 là địa chỉ mới.
r. Direct Indirect: 2 byte tại địa chỉ Direct Page được dùng để tạo thành địa chỉ 16 bit. Sau đó kết hợp với DBR để tạo thành địa chỉ đích 24 bit.
D: 0000 DBR: $80
Memory Dump:
0040: 50 00 80 00 22 23 33 44
0050: 60 21 21 21 22 55 55 66
LDA ($40)
Địa chỉ DP = $40 + D = $40
Địa chỉ 16 bit tại $40 = $0050
Địa chỉ đích = DBR:$0050 = $80:0050
s. Direct Indirect Long: 3 byte tại địa chỉ Direct page được dùng để tạo thành địa chỉ đích.
D: 0000 DBR: $80
Memory Dump:
0040: 50 00 80 00 22 23 33 44
0050: 60 21 21 21 22 55 55 66
LDA [$40]
Địa chỉ DP = $40 + D = $40
Địa chỉ đích = $80:0050
4. Memory mapping và địa chỉ RAM/ROM
Trong phần trước, ta đã gặp từ "bank".
Trong địa chỉ XX:YYZZ thì phần XX chính là bank.
ROM của SNES được tải trong phạm vi từ 00:0000 cho tới FF:FFFF.
Vị trí của ROM trong bộ nhớ khác nhau tùy thuộc vào chủng loại ROM (LoROM và HiROM).
Tham khảo thêm bài viết này (click vào).để biết thêm chi tiết.
Nếu không biết ROM đối tượng thuộc loại gì thì có thể dùng Lunar Address, chọn Auto-Detect Type rồi chọn đường dẫn đến ROM để biết. FE4 là HiROM.
Phần trong khoanh đỏ là để phần mềm xác định giúp ta loại ROM, phần trong khoanh vàng cho biết ROM có $200 header hay không. Phần trong khoanh màu lam là địa chỉ khi xem bằng Hex editor, còn trong khoanh màu lục là địa chỉ tương ứng trong Memory của máy SNES.
Như trong hình thì địa chỉ $223AC khi mở bằng Hex editor thì trong bộ nhớ của SNES, địa chỉ đó là $C2:21AC ($21AC ở bank C2).
5. Giải thích về Debugger Snes9X
Các phiên bản cũ của Debugger này không hỗ trợ ROM có header. Khi chạy cần phải cắt bỏ header đi. Tuy nhiên các bản sau này vẫn chạy được ROM có header.
Khi bắt đầu nạp game thì sẽ xuất hiện cửa sổ Debug Console với các chức năng như sau:
Next Op Hiển thị mệnh lệnh tiếp theo được thi hành
Step Into Thi hành 1 lệnh tiếp theo. Khi có Sub routine thì sẽ nhảy đến Sub routine đó.
Step Over Thi hành 1 lệnh tiếp theo. Khi có Sub routine thì sẽ thi hành liên tục đến khi kết thúc Sub routine đó
Step Out Thi hành mệnh lệnh tiếp theo cho tới khi kết thúc Sub routine hiện tại
Skip Bỏ qua 1 lệnh tiếp theo
Clear Text Xóa hết dữ liệu log hiển thị trên cửa sổ Debug Console
Disassemble Dis-assemble (phân tích ngược) từ địa chỉ bắt đầu/kết thúc đã chỉ định
Run Chạy game cho đến khi gặp phải Break point
Reset ROM Có gì khó hiểu?
Frame Adv Thi hành số frame chỉ định (*1)
Vector Info Hiển thị Vector của CPU và APU (bộ xử lý âm thanh)
Sprite Status Hiển thị thông tin liên quan đến sprite mà EMU đang hiển thị
APU State APU
Sample Addr Hiển thị địa chỉ mẫu mà APU đang duy trì
Show Hex Gọi Hex Editor. Từ đây có thể xem được ROM, RAM, VRAM, ARAM và SRAM
Dump RAM Trích xuất RAM bắt đầu từ địa chỉ chỉ định, với số byte chỉ định
Dump Palette Hiển thị palette
What’s Used Hiển thị chức năng hiển thị mà ROM hiện đang sử dụng(VRAM, BG,..)
What’s Missing
Trace From Chỉ định địa chỉ bắt đầu ghi log
Reset Debug Xóa thông tin debug
BreakPoints Chỉ định Break point
Exec Break (dừng) ngay trước khi thực hiện mệnh lệnh ở địa chỉ được chỉ định
Read Break (dừng) ngay trước khi đọc từ địa chỉ được chỉ định
Write Break (dừng) ngay trước khi ghi vào địa chỉ được chỉ định
Logging Chọn xuất log: CPU, APU, SA1 hay Sound DSP
Special Tracing Chọn xuất log: DMA, HDMA, VRAM, DSP-1 hay Unknown Register
CPU Trace Options Tùy chọn khi xuất log
Trace Once Không xuất log đối với lệnh đã thực hiện một lần rồi
Split Tách file log
Tabbed Output Xuất với phân khu tab
Misc Options Tùy chọn khác
Tilde FF Chọn cho phép Turbo mode với phím "~" hay không
Alt Menu Behavior Không hiển thị thanh Menu của Emu
Auto Usage Map Usage Tự động xuất Map
Usage Maps Usage là một dạng log ghi lại các địa chỉ đã đọc và địa chỉ đã thi hành lệnh
Open Usage Khỏi giải thích
Merge Usage Khỏi giải thích
Save Usage Khỏi giải thích
Gen Offsets Xuất log Usage dưới dạng txt
Hex Editor Gọi Memory Editor. Cần cẩn thị vì đôi khi cuộn xuống địa chỉ bên dưới dễ bị đơ.
Viewing:
ROM: nếu là LoROM thì hiển thị phạm vi từ 80:8000~BF:FFFF, nếu là HiROM thì hiển thị từ C0:0000~FF:FFFF
RAM: thể hiện phạm vi của RAM từ 7E:0000~7F:FFFF
VRAM: thể hiện phạm vi của Video RAM từ 0000~FFFF
ARAM: thể hiện phạm vi của Audio RAM từ 0000~FFFF
Freeze: giữ cố định, không cho cập nhật các giá trị (biến số) trong phạm vi RAM đã chọn.
Save ROM: ghi lại mọi thay đổi sau khi chỉnh sửa vào ROM.
Open TBL : mở file table với định dạng .tbl. Tuy nhiên chỉ hỗ trợ kiểu encoding ascii chứ chưa hỗ trợ tiếng Nhật hay Unicode.
(*1): giả lập Snes9X có tốc độ khung 60 fps (1 frame là 0.016 giây), nhưng Debuger chỉ có tốc độ 30 fps.
IV. Phần thực chiến
1. Tìm cheat code
Hẳn là phần nhiều những người chơi game Snes đều đã một vài lần sử dụng cheat code. Bằng cách nhập một đoạn code vào SNES, người chơi có được những khả năng phi thường như bất tử, bắn không bao giờ hết đạn, chạy nhanh gấp 3 bình thường,...
Cũng có nhiều người căm ghét việc dùng cheat code. Tuy nhiên, để hiểu được cặn kẽ việc hack game thì cần phải hiểu rõ về cheat code. Hai yếu tố này có quan hệ mật thiết với nhau, như giải thích dưới đây.
Dữ liệu game luôn có 2 kiểu: kiểu cố định và kiểu biến động. Kiểu cố định là dữ liệu luôn không đổi, nằm trong ROM và kiểu biến động chính là biến số được lưu và cập nhật thường xuyên trong RAM. Đối với FE4, các dữ liệu như binh chủng, chỉ số ban đầu của nhân vật là kiểu cố định. Tuy nhiên, trong quá trình chơi thì nhân vật sẽ Level up, các chỉ số như HP, sức mạnh, phòng vệ được tăng dần. Đây chính là biến số.
Tất cả các game SNES đều lưu biến số trong RAM từ địa chỉ 7E:0000~7F:FFFF.
Chính vì vậy, ta hay thấy cheat code của game SNES đều có dạng 7EXXYYZZ hoặc 7FXXYYZZ, trong đó 7EXXYY là địa chỉ của biến số, còn ZZ là giá trị của biến.
Chẳng hạn, nhân vật có chỉ số STR là 15 ($0F). Địa chỉ quản lý chỉ số này nằm ở $7E1A00. Tại địa chỉ này, biến số sẽ là 0F. Bằng cách nhập code $7E1A001A thì máy Snes/giả lập Snes sẽ luôn giữ cho biến số tại $7E1A00 có giá trị $1A, tức nhân vật luôn có chỉ số STR là 26.
Như vậy hẳn bạn đã rõ nguyên lý của cheat code.
Làm cách nào để tìm được cheat code cho một game cụ thể? Có rất nhiều trang mạng đăng tải cheat code này. Hoặc bạn cũng có thể tự tìm bằng chính giả lập Snes9X. Càng biết nhiều cheat code tức là bạn càng nắm được nhiều địa chỉ biến số của game. Càng hiểu rõ các địa chỉ này thì việc hack game càng suông sẻ.
Bây giờ thử dùng Snes9X để tìm địa chỉ quản lý chỉ số kinh nghiệm (EXP) của nhân vật Siguld.
Chơi từ đầu, ta thấy Siguld có chỉ số EXP là 0, Level 5, chỉ số STR là 5, MGC là 0, SK là 11,...
Từ cửa sổ Snes9X, chọn Cheat --> Search for New cheats
Tích vào ô =(Equal to), ô Entered Value và gõ "0" (chỉ số EXP hiện tại) vào khung Enter a Value (nhập một giá trị) bên dưới rồi Search. Chương trình tìm được rất nhiều địa chỉ có giá trị "0" tại thời điểm hiện tại, trong số đó có địa chỉ quản lý EXP.
Chọn đánh một tên địch ở gần nhất.
Sau khi đánh chết địch, Siguld nhận được 22 EXP.
Lúc này lại chọn Cheat --> Search for New cheats để vào cửa sổ lúc nãy.
Gõ "22" (giá trị EXP hiện tại, sau khi hạ tên địch) vào ô Entered Value, click vào Search và sẽ được một số ít kết quả hơn lúc nãy. Kết quả lúc này là một loạt địa chỉ có biến số "0" lúc trước, nay đã trở thành "22".
Tiếp tục hạ một tên địch khác. Lúc này Siguld được 44 EXP. Làm tương tự bước tìm kiếm bên trên với giá trị "44" và được kết quả tại $7E2D4D.
Kết quả lần này chỉ có 1 địa chỉ duy nhất. Đây là địa chỉ chứa giá trị từ 0 --> 22 --> 44. Để kiểm chứng, có thể nhập địa chỉ này vào cửa sổ Cheat --> Game Genie, Pro-Action Replay Codes --> Cheat Entry and Editor. Nếu nhập 7E2D4D05 vào ô "Enter Cheat Code" và chỉ số EXP của Siguld luôn là 05, bất chấp sau khi hạ lính địch thì đích thị $7E2D4D chính là địa chỉ quản lý EXP.
Bằng cách dò tìm tương tự, ta có các địa chỉ quản lý các chỉ số khác của nhân vật này như sau.
Max HP: 7E2D40
STR: 7E2D41
MGC: 7E2D42
SK: 7E2D43
SPD: 7E2D44
DEFEND: 7E2D45
MGC DEFEND: 7E2D46
LUCK: 7E2D47
LEVEL: 7E2D49
EXP: 7E2D4D
Có thể tham khảo thêm các địa chỉ khác tại trang này (click vào)
2. Hack với kiến thức ASM
Như vậy ta đã tìm được cheat code cho các chỉ số của nhân vật. Tuy nhiên, việc sử dụng cheat code có hạn chế là chỉ sử dụng được một giá trị tại một thời điểm, và ngoài việc giữ cố định giá trị thì nó không còn tác dụng gì khác. Nếu muốn sau khi đánh địch, Siguld nhận được XX EXP, hoặc sau khi đánh địch, không tăng EXP mà lại Level up hoặc tăng các chỉ số khác thì cheat code không làm được. Lúc này cần đến kiến thức ASM để giải quyết.
Reset game, chơi lại từ đầu và tích vào ô Logging, bỏ tích ô Trace Once khi bắt đầu đánh địch.
Khi đánh địch xong, bỏ tích ở ô Logging và Debuger sẽ ghi lại log (lịch sử các câu lệnh đã thực thi) vào thư mục Logs. Mở file log bằng Text editor, tìm kiếm "7E:2D4D" (địa chỉ quản lý EXP mà ta đã biết từ trước) trong file log, sẽ tìm thấy kết quả
$84/AA48 BD 09 00 LDA $0009,x[$7E:2D49] A:2D40 X:2D40 Y:4EB5 P:envmxdizc
$84/AA4B 29 FF 00 AND #$00FF A:0205 X:2D40 Y:4EB5 P:envmxdizc
$84/AA4E C9 1E 00 CMP #$001E A:0005 X:2D40 Y:4EB5 P:envmxdizc
$84/AA51 B0 5A BCS $5A [$AAAD] A:0005 X:2D40 Y:4EB5 P:eNvmxdizc
$84/AA53 E2 20 SEP #$20 A:0005 X:2D40 Y:4EB5 P:eNvmxdizc
$84/AA55 BD 0D 00 LDA $000D,x[$7E:2D4D] A:0005 X:2D40 Y:4EB5 P:eNvMxdizc
$84/AA58 18 CLC A:0000 X:2D40 Y:4EB5 P:envMxdiZc
$84/AA59 6F 74 05 00 ADC $000574[$00:0574] A:0000 X:2D40 Y:4EB5 P:envMxdiZc
$84/AA5D C9 64 CMP #$64 A:0016 X:2D40 Y:4EB5 P:envMxdizc
$84/AA5F B0 0D BCS $0D [$AA6E] A:0016 X:2D40 Y:4EB5 P:eNvMxdizc
$84/AA61 9D 0D 00 STA $000D,x[$7E:2D4D] A:0016 X:2D40 Y:4EB5 P:eNvMxdizc
$84/AA64 C2 20 REP #$20 A:0016 X:2D40 Y:4EB5 P:eNvMxdizc
$84/AA66 A9 00 00 LDA #$0000 A:0016 X:2D40 Y:4EB5 P:eNvmxdizc
$84/AA69 FA PLX A:0000 X:2D40 Y:4EB5 P:envmxdiZc
$84/AA6A 28 PLP A:0000 X:4EB5 Y:4EB5 P:envmxdizc
$84/AA6B AB PLB A:0000 X:4EB5 Y:4EB5 P:envmxdizc
$84/AA6C 18 CLC A:0000 X:4EB5 Y:4EB5 P:envmxdizc
$84/AA6D 6B RTL A:0000 X:4EB5 Y:4EB5 P:envmxdizc
Dòng đầu tiên
$84/AA48 BD 09 00 LDA $0009,x[$7E:2D49]
cho thấy tại địa chỉ $84:AA48 có câu lệnh LDA $0009, X
Dạng số thập lục của dòng lệnh này là BD 09 00.
Lúc này giá trị tại X đang là 2D40, nên câu lệnh kia có ý nghĩa là tải một byte từ địa chỉ $7E:2D49 vào Accumulator (A). $7E:2D49 chính là địa chỉ quản lý Level của Siguld. Khi bật chức năng Show Hex, chọn xem RAM ở địa chỉ $7E:2D49 thì ta thấy giá trị tại đây là 05, ứng với mức Level của Siguld là 5.
Những dòng tiếp theo
$84/AA4B 29 FF 00 AND #$00FF
Dòng này cho biết giá trị (Level của Siguld) đã tải vào A sẽ được AND với giá trị $FF. AND là một phép tính logic theo bit. Có thể tham khảo thêm các trang mạng để biết chi tiết.
$84/AA4E C9 1E 00 CMP #$001E
Tại địa chỉ $84:AA4E, so sánh kết quả giá trị Level của Siguld sau khi AND với 30 ($1E).
$84/AA51 B0 5A BCS $5A [$AAAD]
Tại địa chỉ $84:AA51 cho biết, nếu kết quả của so sánh trên = 30 thì rẻ nhánh sang địa chỉ $84:AAAD. Nếu nhìn vào nội dung ở địa chỉ $84:AAAD thì ta biết đây là nơi thực hiện lệnh phụ, xử lý để Level của nhân vật không được tăng thêm.
$84/AA53 E2 20 SEP #$20
Set bit 5 của P Flag thành 1, biến sức chứa của A Register thành 8 bit.
$84/AA55 BD 0D 00 LDA $000D,x[$7E:2D4D]
Tải một byte (8 bit) tại $7E:2D4D (địa chỉ quản lý EXP của Siguld) vào A.
$84/AA58 18 CLC
Xóa Carry Flag. Luôn thực hiện lệnh này trước lệnh ADC.
$84/AA59 6F 74 05 00 ADC $000574[$00:0574]
Thêm giá trị tại $000574 vào A. $00:0574 là địa chỉ quản lý biến số EXP mà nhân vật nhận được sau khi đánh địch. Số này sẽ biến động phụ thuộc vào quân địch mà bạn đánh. Trùm và lính địch Level càng cao thì số này càng lớn, tức EXP nhận được càng nhiều.
$84/AA5D C9 64 CMP #$64
So sánh kết quả trên với 100 ($64).
$84/AA5F B0 0D BCS $0D [$AA6E]
Nếu kết quả so sánh trên bằng 100 thì nhảy đến địa chỉ $84:AA6E.
$84/AA61 9D 0D 00 STA $000D,x[$7E:2D4D]
Ghi giá trị trong A vào địa chỉ $7E:2D4D. Đây là địa chỉ quản lý EXP của Siguld.
Như vậy, qua 4 dòng lệnh đầu tiên thì ta hiểu: nếu Level của Siguld = 30 thì nhân vật này sẽ không được tăng EXP sau khi đánh địch. Mức thiết lập Max Level của FE4 là 30. Và tuy hạ cùng một tên địch, nhưng nếu Level của nhân vật càng cao thì EXP nhận được càng thấp.
Nếu EXP của nhân vật = 100 thì sẽ Level up và reset lại EXP = 0.
Nếu muốn sau khi đánh, nhân vật luôn nhận được 13 EXP, bất kể ở Level nào thì chỉ cần sửa dòng
ADC $000574
thành
ADC #$0D là được.
Dùng Lunar Address, chuyển đổi $84:AA59 sang địa chỉ PC, ta được $04AC59. Dùng Stirling để biên tập 6F 74 05 00 tại $04AC59 thành 69 0D EA EA thì dù sau khi đánh địch, Siguld luôn nhận được 13 EXP.
69 chính là mã thập lục của lệnh ADC với hằng số. EA chính là mã thập lục (hex) của lệnh NOP (không làm gì cả). Vì giá trị cũ là 6F 74 05 00 chiếm 4 byte, trong khi giá trị mới chỉ có 2 byte (69 0D) nên 2 byte sau phải được vô hiệu hóa bằng lệnh "không làm gì cả".
Nếu muốn Siguld luôn Level up sau mỗi lần đánh thì thay ADC #$0D (69 0D) thành ADC #$64 (69 64) là được. Lúc này EXP của Siguld luôn ở mức 100 nên chỉ cần sau trận đánh là được Level up.
Nếu muốn sau trận đánh, chỉ số MHP của Siguld trở thành bằng đúng với số EXP nhận được thì chỉ cần thay
STA $000D,X[$7E:2D4D]
thành
STA $0001,X[$7E:2D40]
là được. Lúc này giá trị EXP nhận được sẽ không được ghi vào địa chỉ quản lý EXP nữa mà ghi vào địa chỉ quản lý MHP ($7E:2D40). Cụ thể, tại $04AC61 ($84:AA61), thay 9D 0D 00 thành 9D 00 00 là được.
Tương tự, ta có thể biến số EXP nhận được thành các chỉ số khác.
Trên đây chỉ là một vài ứng dụng nhỏ với kiến thức ASM. Với ASM, bạn có thể làm mọi điều trong game, những điều mà không một cheat code hay một chương trình nào khác có thể làm được. Bạn hoàn toàn có thể biến nó thành một game hoàn toàn khác với ASM. Bạn có thể khiến số lần sử dụng của vũ khí tăng lên sau mỗi lần đánh, thay vì giảm xuống, hay HP tăng lên khi bị trúng đòn. Những điều phi lý/phi phàm/phi thường này chỉ có thể thực hiện khi đã nắm rõ ASM, cho nên việc chuyển ngôn ngữ của game sang một thứ tiếng nào đó chỉ là chuyện nhỏ khi bạn đã thấu rõ ngôn ngữ lập trình này.
Bài viết của Asm65816 © 2016
Đăng tại http://gokuraku-shujo.blogspot.com/p/game.html
Đăng tại http://gokuraku-shujo.blogspot.com/p/game.html
Chào Ad! Bấy lâu nay mình cũng thử cheat mấy game NES ,chẳng hạn như game contra 1,ReplyDelete
Mã cheat 30 mạng từ tay bấm 4 nút xưa : At the Title Screen press Up, Up, Down, Down, Left, Right, Left, Right, B, A, Start.
link
https://www.gamefaqs.com/nes/563399-contra/cheats
Còn chơi trên PC bằng giả lập Nestopia khi vào game thì chọn options>cheats>add>trong thẻ Raw dưới dòng address ,gõ mã code : 0032 ( không không ba hai ) ,ở dòng value : có thể gõ từ 4 đến 99 là cheat mạng.VD: chọn 30 đi cho tương ứng với tay bấm bốn nút trên.
Còn khi ta vào web : http://gamehacking.org/
thì mã lại khác nữa.
Mình muốn hỏi add có mối liên hệ nào từ những mã hack trên không ? ( cùng hack về mạng 1 trò chơi nhưng mã hack khác nhau ) Nếu có thể hack quay 1 clip ngắn có thiết minh để mình học với.Ý của mình là các mã đó thực ra là 1 nếu chuyển đổi hệ đếm HEX ,DEC ...?

markdown:
Đọc bản pdf tại đây (
[click](http://www.mediafire.com/view/c36cl38qqeu79cx/%5BTutorial%5DHack_FE4.pdf))
Bạn đã bao giờ chơi một game hack với những yếu tố hoàn toàn mới hay một bản dịch Việt ngữ? Bạn thắc mắc vì sao người ta có thể làm cho nhân vật Mario bay được, trong khi mặc định trong game bình thường là chạy bộ? Câu trả lời là Assembly, hay gọi tắt là Asm. Bài viết này cung cấp cho bạn đọc những kiến thức cơ bản nhất về Asm, thông qua game Fire Emblem 4 Seisen no Keifu trên máy Super Nintendō làm ví dụ. Bài viết cố gắng cô đọng, tóm tắt những kiến thức cần thiết nhất để người (đủ kiên nhẫn) đọc có thể làm theo và tự phát triển nền tảng cho riêng mình.
Hiện nay trên Net có rất nhiều tài liệu về Asm 65816 dành cho hệ máy SFC (SNES) bằng tiếng Nhật, tiếng Anh, tiếng Tây, tiếng Bồ.... nhưng chưa có một tài liệu nào bằng tiếng Việt. Có thể xem đây là tài liệu tiếng Việt đầu tiên về lãnh vực này. Nếu muốn tìm hiểu sâu hơn để hack/dịch game Snes thì có thể tham khảo thêm tài liệu trong các ngôn ngữ kể trên.
**I. Cần chuẩn bị**
Để theo được bài viết này, bạn cần chuẩn bị một số thứ tối thiểu như sau:
1. Kiến thức về hệ nhị phân (Binary, Bin) và hệ thập lục (Hexadecimal, Hex), kiến thức về bit và byte. Không nhắc lại ở đây vì những bài viết về hai hệ số này đã tràn ngập Google rồi, tôi không tốn thời gian gõ lại làm gì.
2. Lòng đam mê với game SNES. Cái này thì ai trả qua tuổi thơ với SNES thì mặc định là có (:V).
3. Một chút thời gian rãnh. Không nhiều lắm, nhưng đủ để đọc hết bài viết này và làm theo. Có thể chia thành nhiều kỳ, số kỳ không hạn chế, tùy vào độ rãnh háng của bạn.
4. Giả lập kiêm Debugger để chạy game SNES. Trên Net có kha khá, nhưng khuyên dùng Snes9X.
**Tải về tại đây**( [click vào](https://vozforums.com/redirect/index.php?link=http%3A%2F%2Fgeigercount.net%2Fcrypt%2Fgsd%2Fsnes9x1.51.ep10r2.7z)).
5. Bản Mộc Đế 4 (
**Fire Emblem 4 Seisen no Keifu**). Dùng được cho bản gốc tiếng Nhật và bản dịch tiếng Việt của Asm65816. Ở đây dùng bản tiếng Việt. **Tải về tại đây**( [click vào](https://vozforums.com/redirect/index.php?link=https%3A%2F%2Fdocs.google.com%2Fuc%3Fauthuser%3D0%26id%3D0BzTRAGYOl4abbmcyNnR2dExhNVk%26export%3Ddownload))
6. Trình Hex Editor. Có vô vàn, nhưng tôi hay dùng Stirling vì sự tiện dụng của nó.
**Tải bản tiếng Việt của Stirling tại đây**( [click vào](https://vozforums.com/redirect/index.php?link=https%3A%2F%2Fdocs.google.com%2Fuc%3Fauthuser%3D0%26id%3D0BzTRAGYOl4abSE05WTNqY29LLXM%26export%3Ddownload)).
7. Lunar Address, tiện ích chuyển đổi giữa địa chỉ PC và địa chỉ SNES.
**Tải về tại đây**( [click vào](https://vozforums.com/redirect/index.php?link=http%3A%2F%2Ffusoya.eludevisibility.org%2Fla%2Fdownload%2Fla104.zip)).
8. Cuối cùng, à chưa phải cuối cùng. Một chút kiên nhẫn. Không cần nhiều lắm, chỉ cần đủ để đọc lại bài này từ đầu chí cuối sau khi đọc hết mà vẫn không hiểu gì.
9. Đây mới là cuối cùng. Cần một bộ óc bình thường như cân đường hộp sữa. Không cần cái đầu quá nhanh như Corei7 hay Qualcom 820, nhưng nếu nhanh được như vậy thì càng tốt. Chỉ cần làm được 5 phép tính cộng trừ nhân chia số có 2 chữ số trong thời gian 1 phút là đủ tiêu chuẩn.
**II. Khái quát về Asm 65816**
Asm là từ viết tắt của Assembly, tiếng Việt dịch là "hợp ngữ", gọi nôm na là ngôn ngữ máy. Asm là ngôn ngữ bậc thấp mà máy tính (các loại máy nói chung, không nói riêng về "máy vi tính") sử dụng và hiểu được. Nó khá đơn giản, chỉ gồm 2 con số là "0" và "1". Chả còn gì đơn giản hơn. Máy tính vốn dĩ tối dạ và ngu đần, không có trí tuệ. Nó không hiểu được tiếng người, nó không phân biệt được trai gái, không biết đâu là rượu đâu là nước,... Nói tóm lại, ngoài "0" và "1" ra thì nó chả biết gì nữa hết. Điểm cộng duy nhất của máy tính là mặc dù ngu đần nhưng lại tuy u ám không có trí tuệ nhưng lại nhanh trí.
OK? Trí tuệ và nhanh trí là hai khái niệm hoàn toàn khác nhau. Máy tính có thể đếm, cộng trừ nhân chia hàng triệu con số trong nháy mắt, nhanh hơn bất kỳ một con người nhanh trí nào. Nhưng vì không thông minh nên nó cứ ngồi đợi con người ra lệnh, giao việc cho làm. Nếu máy tính mà thông minh thì chắc giờ này tôi đang làm việc nhà cho nó rồi, đâu rãnh mà ngồi đây viết linh ta cho các bạn đọc linh tinh.
Quay trở lại vấn đề, máy tính rất đơn giản. Còn con người thì đẳng cấp hơn nhiều, và cũng phức tạp hơn nhiều. Thế giới của máy tính chỉ có "0" và "1" thì thế giới con người còn có gái gú, rượu chè, hút sách, lừa lọc, giết hại nhau,..... Khi đã quen thuộc với những cái siêu phức tạp như vậy thì dường như chúng ta gặp rất nhiều khó khăn trong việc giao tiếp với thứ đơn giản như cái máy tính.
Cũng giống như hệ thống ngôn ngữ của người lớn thì phức tạp, có thể phát âm rất nhiều âm tiết tinh vi. Trong khi cổ họng của trẻ sơ sinh chỉ có vài từ "ă", "ú" và "â". Vì vậy mà đại đa số người lớn chúng ta không hiểu bọn con nít mới đẻ chúng nói gì, mà phải cần qua người phiên dịch là mẹ chúng. Bà mẹ này vừa hiểu được chúng, vừa hiểu được chúng ta nên trở thành cây cầu nối trong giao tiếp giữa hai bên. Ngôn ngữ Assembly, hay ASM cũng vậy. Nó vừa để con người có thể hiểu được, vừa để máy tính hiểu được.
Ngôn ngữ mà ngày xưa các cụ dùng để giao việc cho máy SNES có tên mã là 65816, 65C816. Gọi túm lại là Asm 65816. Đây là hệ máy 16 bit, vì có Register có độ rộng 16 bit. Nếu muốn hack/dịch game SNES thì kiểu gì cũng phải biết qua ngôn ngữ này. Những khái niệm cơ bản nhất về nó sẽ lần lượt xuất hiện trong bài này.
Điều đầu tiên cần phải biết là CPU 65816 thực hiện tuần tự các mệnh lệnh mà người ta viết sẵn theo thứ tự từ trên xuống, từ trước đến sau.
{Lệnh 1}
{Lệnh 2}
{Lệnh 3}
....
{Lệnh n}
Nó sẽ thực hiện lần lượt đúng như thứ tự trên, rất đơn giản đúng không?
Đầu tiên, mở FE4 bằng Stirling, ta sẽ thấy vô vàn con số ở hệ thập lục.
Những con số này chính các dòng lệnh để CPU thực thi. Mỗi một số thập lục ứng với một mệnh lệnh, và chúng đều có ý nghĩa riêng. CPU của máy 65816 (Snes) có tới 256 lệnh. Một số lệnh chủ yếu sẽ được giới thiệu bên dưới đây.
**III. Khái niệm cơ bản**
Dưới đây là những khái niệm cơ bản nhất mà bạn cần phải biết khi bước chân vào thế giới 65816.
**1. Endian**
Endian là thuật ngữ chỉ trật tự sắp xếp byte trong bộ nhớ của máy tính. Có 2 kiểu phổ biến là
**Big endian**và **Little endian**. Đối với kiểu Big endian thì dữ liệu được xếp theo trật tự thuận, chẳng hạn một chuỗi gồm 4 byte 03 6A 7F 45 thì sẽ được xếp là 03 6A 7F 45. Còn đối với kiểu Little endian thì trật tự này được xếp ngược là 45 7F 6A 03. Các hệ máy console cũ như NES, SNES, PlayStation, Megadrive... thì sử dụng kiểu Little endian, còn các hệ console đời mới như PlayStation 3, Xbox 360... đều sử dụng kiểu Big endian. Xác định kiểu endian là một khâu quan trọng trong việc hack dữ liệu. **2. Register**
Có thể nói, linh hồn của một phần cứng chính là các Register. Chữ "Regist" mang nghĩa "duy trì". Register là thứ duy trì một cái gì đó. Trong ngôn ngữ Asm thì Register duy trì các giá trị, cụ thể là các biến số.
Phần cứng 65816 có nhiều Register, trong số đó hay gặp là: A (Accumulator), X và Y (Index Register), DB (Data bank) và P (Status Register, hay còn gọi là Flag). Ngoài ra còn có PC (Program Counter) Register giữ địa chỉ của lệnh hiện tại, D (Direc page) Register, S (Stack) Register. Trong số này thì chỉ có A, X, Y là có thể chuyển đổi giữa 2 chế độ: 8 bit và 16 bit để giữ byte bằng cách set và reset các bit trong P Register. P là Register 8 bit, theo thứ tự là:
n: Negative
v: Overflow
m: Memory/Accumulator Select
x: Index Register select
d: Decimal
i: Interrupt
z: Zero
c: Carry
Từng bit khi được set (trạng thái "1") hay reset (trạng thái "0") thì sẽ cho tác dụng khác nhau. Chẳng hạn, nếu bit thứ 5 của P Flag được set (1) thì A Register là 8 bit, còn nếu là reset (0) thì A có chứa được giá trị 16 bit. Tương tự, X và Y Register chứa được giá trị 8 hay 16 bit phụ thuộc vào trạng thái của bit thứ 4 của P Flag.
**3. Addressing mode**
Trong ngôn ngữ Asm, có nhiều cách để chỉ định địa chỉ, và tất cả những cách này đều được gọi chung là Addressing mode. Chẳng hạn, lệnh LDA #$20 có ý nghĩa khác với LDA $20.
Lệnh đầu tiên là tải giá trị $20 (thập lục) vào A Register, còn lệnh sau tải giá trị (biến số) tại địa chỉ $20 vào A Register.
**a. Immediate**: kiểu định địa chỉ này được xác định với một giá trị cụ thể. Chẳng hạn
LDA #$FF ;tải giá trị $FF vào A
SEP #$30 ;đưa giá trị $30 vào P Flag
**b. Direct**: địa chỉ đích được hình thành bằng cách thêm một địa chỉ 8 bit vào Direct page Register (D). Chẳng hạn:
LDA $20 tải giá trị (biến số) tại địa chỉ $20
Nếu D = $1000 thì CPU sẽ đọc một byte (nếu A 8 bit) từ địa chỉ $1020.
**c. Absolute**: địa chỉ đích được hình thành bằng cách thêm một địa chỉ 16 bit vào DBR. Chẳng hạn:
DBR: $80
LDA $901C
Thì CPU sẽ tải một byte từ địa chỉ $88: 901C vào Accumulator (A).
**d. Absolute Long**: địa chỉ đích chính là địa chỉ được thể hiện trong lệnh.
LDA $808000 ; tải một byte từ địa chỉ $80:8000 vào A
LDA $FF9090 ; tải một byte từ địa chỉ $FF:9090 vào A
**d. Accumulator**: địa chỉ đích chính là A Register.
INC ; tăng giá trị của A lên 1
**e. Direct Indirect Indexed**: đây chính là nơi các Index Register (X và Y) vào cuộc. CPU sẽ tải 2 byte (16 bit) từ địa chỉ Direct page để tạo thành một địa chỉ nền kết hợp với DBR. Cuối cùng, giá trị của Y được thêm vào địa chỉ nền kia để tạo thành một địa chỉ 2 byte.
DBR: $80, D: $0020, Y: 0001
Memory dump (các giá trị trong bộ nhớ lúc này):
0030: 30 40 23 22 F4 22 23 1C
0038: 23 2D DD F4 FF FF FF FF
LDA ($10), Y
Sẽ cho địa chỉ sau:
Đầu tiên ta có $10 + giá trị tại D ($0020) là: $10 + $0020 = $0030
Nhìn vào bộ nhớ (Memory), lúc này ta thấy giá trị tại $30 và $31 là 30 và 40.
Do vậy địa chỉ sẽ là: $3040, nhưng vì SNES sử dụng kiểu Little endian nên địa chỉ đúng sẽ là $4030.
Kết hợp với DBR để có địa chỉ nền: $80:4030
Cuối cùng, tính thêm giá trị của Y vào: $80:4030 + $0001 = $80:4031
Như vậy, dòng lệnh trên
LDA ($10), Y
sẽ tải một byte từ địa chỉ $80:4031 vào trong A. Thường thì kiểu định địa chỉ này được dùng trong vòng lặp, khi Y được gia tăng mỗi lần để lấy một loạt dữ liệu trong Memory. Chẳng hạn
DBR: $80, D: $0020, Y: 0001
Memory dump:
0030: 30 40 23 22 F4 22 23 1C
0038: 23 2D DD F4 FF FF FF FF
LDA ($15), Y
INY
Địa chỉ DP = $0020 + $15 = $ 0035
Địa chỉ nền = DBR:<2 data-blogger-escaped-a="" data-blogger-escaped-byte="" data-blogger-escaped-ch="" data-blogger-escaped-t=""> = $80:2322
Địa chỉ đích = Địa chỉ nền + Y = $80:2323
INY: gia tăng giá trị của Y lên 1
Như vậy, 2 dòng lệnh trên sẽ liên tục tải các giá trị tại $80:2322, $80:2323, $80:2324,... vào A.
Thường thì giá trị tại D Register là 0, cho nên việc tính toán cũng đơn giản hơn.
**f. Direct Indirect Indexed Long**: kiểu xác định địa chỉ này về cơ bản thì giống kiểu e. Chỉ khác nhau ở chỗ nó sử dụng 3 byte tại địa chỉ DP thay vì 2 byte và không kết hợp với DBR. Ví dụ:
DBR: $80, D: $0020, Y: 0001
Memory dump:
0030: 30 40 23 22 F4 22 23 1C
0038: 23 2D DD F4 FF FF FF FF
LDA [$10], Y
Địa chỉ DP = $0020 + $10 = $0030
Địa chỉ nền = $23:4030.
Địa chỉ đích = địa chỉ nền + Y = $23:4030 + $0001 = $23:4031
**g. Direct Indexed Indirect**: sau khi tính địa chỉ Direct page, cộng với giá trị tại X. Sau đó lấy 2 byte tại địa chỉ này, kết hợp với DBR để tạo thành địa chỉ đích.
DBR: $80 D: $0020 X: $0004
Memory dump:
0020: FF 00 FF 09 33 33 09 88
0028: 08 76 66 36 D7 23 99 00
LDA ($02, X)
Địa chỉ DP = $02 + D = $0022
Sau đó kết hợp với X
Địa chỉ DP + X = $0026
2 bytes tại $0026 là (09 và 88), đảo ngược (Little endian) thành $8809, cuối cùng kết hợp với DBR:
DBR:$8809 = $80:8809
CPU sẽ tải giá trị tại địa chỉ $80:8809 vào A.
**h. Direct Indexed với X**: trong kiểu định địa chỉ này thì địa chỉ DP được cộng với giá trị tại X để tạo thành địa chỉ đích. Địa chỉ đích luôn nằm ở bank 0.
D: $0020 X: $0004
LDA $30, x
Địa chỉ DP = $30 + $0020 = $0050
Địa chỉ đích = địa chỉ DP + X = $00:0054
**i. Direct Indexed với Y**: giống kiểu h. nhưng khác nhau ở chỗ địa chỉ DP cộng với giá trị tại Y để hình thành địa chỉ đích. **j. Absolute Indexed với X**: giá trị 2 byte được cộng với X rồi kết hợp với DBR để hình thành địa chỉ đích.
DBR: $80 X: $0001
LDA $8000, X
Địa chỉ đích = DBR:($8000 + X) = $80:8001
LDA $6988, X
Địa chỉ đích = DBR:($6988 + X) = $80:6989
**k. Absolute Indexed với Y**: giống kiểu j. nhưng thay vì cộng với X thì ở đây cộng với Y. **l. Absolute Long Indexed với X**: địa chỉ đích được hình thành bằng cách cộng giá trị tại X với địa chỉ 3 byte.
X: $0001
LDA $808000, X ; tải một byte tại $80:8001 vào A
LDA $589112, X ; tải một byte tại $58:9113 vào A
**m. Absolute Long Indexed với Y**: giống kiểu l. nhưng thay vì cộng với X thì ở đây cộng với Y. **n. Program Counter Relative**: kiểu định địa chỉ này chỉ được dùng trong các lệnh phân nhánh. Giá trị 8 bit được thêm vào PC (Progtam Counter) để tạo thành địa chỉ đích mà lệnh thực thi nhảy đến. Giá trị 8 bit này có phạm vi từ -128 cho đến 127.
BRA $8005 ; phân nhánh sang địa chỉ $8005 trong phạm vi (-128 tới 127)
**o. Program Counter Relative Long**: giống kiểu n. nhưng phạm vi trong khoảng (0 tới 65535). Chỉ có lệnh BRL và PER dùng kiểu này. **p. Absolute Indirect**: địa chỉ đích được hình thành từ 2 byte.
Memory dump:
0000: 90 77 78 00 43 00 00 00
0008: 33 45 12 33 11 11 FF FF
JMP ($0008)
CPU sẽ lấy 2 byte tại $0008 là (33, 32), rồi nhảy sang địa chỉ $4533.
**q. Absolute Indexed Indirect**: giá trị 2 byte được cộng với X, sau đó 2 byte tại địa chỉ này được dùng để tạo nên địa chỉ đích.
X: 0001
Memory dump:
0000: 90 77 78 00 43 00 00 00
0008: 33 45 12 33 11 11 FF FF
JMP ($0008, X)
Ta có $0008 + X = $0009
Lấy 2 byte từ $0009 = 45 12
$1245 là địa chỉ mới.
**r. Direct Indirect**: 2 byte tại địa chỉ Direct Page được dùng để tạo thành địa chỉ 16 bit. Sau đó kết hợp với DBR để tạo thành địa chỉ đích 24 bit.
D: 0000 DBR: $80
Memory Dump:
0040: 50 00 80 00 22 23 33 44
0050: 60 21 21 21 22 55 55 66
LDA ($40)
Địa chỉ DP = $40 + D = $40
Địa chỉ 16 bit tại $40 = $0050
Địa chỉ đích = DBR:$0050 = $80:0050
**s. Direct Indirect Long**: 3 byte tại địa chỉ Direct page được dùng để tạo thành địa chỉ đích.
D: 0000 DBR: $80
Memory Dump:
0040: 50 00 80 00 22 23 33 44
0050: 60 21 21 21 22 55 55 66
LDA [$40]
Địa chỉ DP = $40 + D = $40
Địa chỉ đích = $80:0050
**4. Memory mapping và địa chỉ RAM/ROM**
Trong phần trước, ta đã gặp từ "bank".
Trong địa chỉ XX:YYZZ thì phần XX chính là bank.
ROM của SNES được tải trong phạm vi từ 00:0000 cho tới FF:FFFF.
Vị trí của ROM trong bộ nhớ khác nhau tùy thuộc vào chủng loại ROM (LoROM và HiROM).
Tham khảo thêm bài viết này (
[click vào](https://vozforums.com/redirect/index.php?link=http%3A%2F%2Fwiki.superfamicom.org%2Fsnes%2Fshow%2FMemory%2BMapping)).để biết thêm chi tiết.
Nếu không biết ROM đối tượng thuộc loại gì thì có thể dùng Lunar Address, chọn Auto-Detect Type rồi chọn đường dẫn đến ROM để biết. FE4 là HiROM.
Phần trong khoanh đỏ là để phần mềm xác định giúp ta loại ROM, phần trong khoanh vàng cho biết ROM có $200 header hay không. Phần trong khoanh màu lam là địa chỉ khi xem bằng Hex editor, còn trong khoanh màu lục là địa chỉ tương ứng trong Memory của máy SNES.
Như trong hình thì địa chỉ $223AC khi mở bằng Hex editor thì trong bộ nhớ của SNES, địa chỉ đó là $C2:21AC ($21AC ở bank C2).
**5. Giải thích về Debugger Snes9X**
Các phiên bản cũ của Debugger này không hỗ trợ ROM có header. Khi chạy cần phải cắt bỏ header đi. Tuy nhiên các bản sau này vẫn chạy được ROM có header.
Khi bắt đầu nạp game thì sẽ xuất hiện cửa sổ Debug Console với các chức năng như sau:
**Next Op**Hiển thị mệnh lệnh tiếp theo được thi hành **Step Into**Thi hành 1 lệnh tiếp theo. Khi có Sub routine thì sẽ nhảy đến Sub routine đó. **Step Over**Thi hành 1 lệnh tiếp theo. Khi có Sub routine thì sẽ thi hành liên tục đến khi kết thúc Sub routine đó **Step Out**Thi hành mệnh lệnh tiếp theo cho tới khi kết thúc Sub routine hiện tại **Skip**Bỏ qua 1 lệnh tiếp theo **Clear Text**Xóa hết dữ liệu log hiển thị trên cửa sổ Debug Console **Disassemble**Dis-assemble (phân tích ngược) từ địa chỉ bắt đầu/kết thúc đã chỉ định **Run**Chạy game cho đến khi gặp phải Break point **Reset ROM**Có gì khó hiểu? **Frame Adv**Thi hành số frame chỉ định (*1) **Vector Info**Hiển thị Vector của CPU và APU (bộ xử lý âm thanh) **Sprite Status**Hiển thị thông tin liên quan đến sprite mà EMU đang hiển thị **APU State APU** **Sample Addr**Hiển thị địa chỉ mẫu mà APU đang duy trì **Show Hex**Gọi Hex Editor. Từ đây có thể xem được ROM, RAM, VRAM, ARAM và SRAM **Dump RAM**Trích xuất RAM bắt đầu từ địa chỉ chỉ định, với số byte chỉ định **Dump Palette**Hiển thị palette **What’s Used**Hiển thị chức năng hiển thị mà ROM hiện đang sử dụng(VRAM, BG,..) **What’s Missing** **Trace From**Chỉ định địa chỉ bắt đầu ghi log **Reset Debug**Xóa thông tin debug **BreakPoints**Chỉ định Break point **Exec**Break (dừng) ngay trước khi thực hiện mệnh lệnh ở địa chỉ được chỉ định **Read**Break (dừng) ngay trước khi đọc từ địa chỉ được chỉ định **Write**Break (dừng) ngay trước khi ghi vào địa chỉ được chỉ định **Logging**Chọn xuất log: CPU, APU, SA1 hay Sound DSP **Special Tracing**Chọn xuất log: DMA, HDMA, VRAM, DSP-1 hay Unknown Register **CPU Trace Options**Tùy chọn khi xuất log **Trace Once**Không xuất log đối với lệnh đã thực hiện một lần rồi **Split**Tách file log **Tabbed Output**Xuất với phân khu tab **Misc Options**Tùy chọn khác **Tilde FF**Chọn cho phép Turbo mode với phím "~" hay không **Alt Menu Behavior**Không hiển thị thanh Menu của Emu **Auto Usage Map Usage**Tự động xuất Map **Usage Maps**Usage là một dạng log ghi lại các địa chỉ đã đọc và địa chỉ đã thi hành lệnh **Open Usage**Khỏi giải thích **Merge Usage**Khỏi giải thích **Save Usage**Khỏi giải thích **Gen Offsets**Xuất log Usage dưới dạng txt **Hex Editor**Gọi Memory Editor. Cần cẩn thị vì đôi khi cuộn xuống địa chỉ bên dưới dễ bị đơ. **Viewing**:
ROM: nếu là LoROM thì hiển thị phạm vi từ 80:8000~BF:FFFF, nếu là HiROM thì hiển thị từ C0:0000~FF:FFFF
RAM: thể hiện phạm vi của RAM từ 7E:0000~7F:FFFF
VRAM: thể hiện phạm vi của Video RAM từ 0000~FFFF
ARAM: thể hiện phạm vi của Audio RAM từ 0000~FFFF
Freeze: giữ cố định, không cho cập nhật các giá trị (biến số) trong phạm vi RAM đã chọn.
Save ROM: ghi lại mọi thay đổi sau khi chỉnh sửa vào ROM.
Open TBL : mở file table với định dạng .tbl. Tuy nhiên chỉ hỗ trợ kiểu encoding ascii chứ chưa hỗ trợ tiếng Nhật hay Unicode.
(*1): giả lập Snes9X có tốc độ khung 60 fps (1 frame là 0.016 giây), nhưng Debuger chỉ có tốc độ 30 fps.
**IV. Phần thực chiến** **1. Tìm cheat code**
Hẳn là phần nhiều những người chơi game Snes đều đã một vài lần sử dụng cheat code. Bằng cách nhập một đoạn code vào SNES, người chơi có được những khả năng phi thường như bất tử, bắn không bao giờ hết đạn, chạy nhanh gấp 3 bình thường,...
Cũng có nhiều người căm ghét việc dùng cheat code. Tuy nhiên, để hiểu được cặn kẽ việc hack game thì cần phải hiểu rõ về cheat code. Hai yếu tố này có quan hệ mật thiết với nhau, như giải thích dưới đây.
Dữ liệu game luôn có 2 kiểu: kiểu cố định và kiểu biến động. Kiểu cố định là dữ liệu luôn không đổi, nằm trong ROM và kiểu biến động chính là biến số được lưu và cập nhật thường xuyên trong RAM. Đối với FE4, các dữ liệu như binh chủng, chỉ số ban đầu của nhân vật là kiểu cố định. Tuy nhiên, trong quá trình chơi thì nhân vật sẽ Level up, các chỉ số như HP, sức mạnh, phòng vệ được tăng dần. Đây chính là biến số.
Tất cả các game SNES đều lưu biến số trong RAM từ địa chỉ 7E:0000~7F:FFFF.
Chính vì vậy, ta hay thấy cheat code của game SNES đều có dạng 7EXXYYZZ hoặc 7FXXYYZZ, trong đó 7EXXYY là địa chỉ của biến số, còn ZZ là giá trị của biến.
Chẳng hạn, nhân vật có chỉ số STR là 15 ($0F). Địa chỉ quản lý chỉ số này nằm ở $7E1A00. Tại địa chỉ này, biến số sẽ là 0F. Bằng cách nhập code $7E1A001A thì máy Snes/giả lập Snes sẽ luôn giữ cho biến số tại $7E1A00 có giá trị $1A, tức nhân vật luôn có chỉ số STR là 26.
Như vậy hẳn bạn đã rõ nguyên lý của cheat code.
Làm cách nào để tìm được cheat code cho một game cụ thể? Có rất nhiều trang mạng đăng tải cheat code này. Hoặc bạn cũng có thể tự tìm bằng chính giả lập Snes9X. Càng biết nhiều cheat code tức là bạn càng nắm được nhiều địa chỉ biến số của game. Càng hiểu rõ các địa chỉ này thì việc hack game càng suông sẻ.
Bây giờ thử dùng Snes9X để tìm địa chỉ quản lý chỉ số kinh nghiệm (EXP) của nhân vật Siguld.
Chơi từ đầu, ta thấy Siguld có chỉ số EXP là 0, Level 5, chỉ số STR là 5, MGC là 0, SK là 11,...
Từ cửa sổ Snes9X, chọn Cheat --> Search for New cheats
Tích vào ô =(Equal to), ô Entered Value và gõ "0" (chỉ số EXP hiện tại) vào khung Enter a Value (nhập một giá trị) bên dưới rồi Search. Chương trình tìm được rất nhiều địa chỉ có giá trị "0" tại thời điểm hiện tại, trong số đó có địa chỉ quản lý EXP.
Chọn đánh một tên địch ở gần nhất.
Sau khi đánh chết địch, Siguld nhận được 22 EXP.
Lúc này lại chọn Cheat --> Search for New cheats để vào cửa sổ lúc nãy.
Gõ "22" (giá trị EXP hiện tại, sau khi hạ tên địch) vào ô Entered Value, click vào Search và sẽ được một số ít kết quả hơn lúc nãy. Kết quả lúc này là một loạt địa chỉ có biến số "0" lúc trước, nay đã trở thành "22".
Tiếp tục hạ một tên địch khác. Lúc này Siguld được 44 EXP. Làm tương tự bước tìm kiếm bên trên với giá trị "44" và được kết quả tại $7E2D4D.
Kết quả lần này chỉ có 1 địa chỉ duy nhất. Đây là địa chỉ chứa giá trị từ 0 --> 22 --> 44. Để kiểm chứng, có thể nhập địa chỉ này vào cửa sổ Cheat --> Game Genie, Pro-Action Replay Codes --> Cheat Entry and Editor. Nếu nhập 7E2D4D05 vào ô "Enter Cheat Code" và chỉ số EXP của Siguld luôn là 05, bất chấp sau khi hạ lính địch thì đích thị $7E2D4D chính là địa chỉ quản lý EXP.
Bằng cách dò tìm tương tự, ta có các địa chỉ quản lý các chỉ số khác của nhân vật này như sau.
Max HP: 7E2D40
STR: 7E2D41
MGC: 7E2D42
SK: 7E2D43
SPD: 7E2D44
DEFEND: 7E2D45
MGC DEFEND: 7E2D46
LUCK: 7E2D47
LEVEL: 7E2D49
EXP: 7E2D4D
Có thể tham khảo thêm các địa chỉ khác tại trang này (
[click vào](https://vozforums.com/redirect/index.php?link=http%3A%2F%2Fwww.gamefaqs.com%2Fsnes%2F564404-fire-emblem-seisen-no-keifu%2Ffaqs%2F14784)) **2. Hack với kiến thức ASM**
Như vậy ta đã tìm được cheat code cho các chỉ số của nhân vật. Tuy nhiên, việc sử dụng cheat code có hạn chế là chỉ sử dụng được một giá trị tại một thời điểm, và ngoài việc giữ cố định giá trị thì nó không còn tác dụng gì khác. Nếu muốn sau khi đánh địch, Siguld nhận được XX EXP, hoặc sau khi đánh địch, không tăng EXP mà lại Level up hoặc tăng các chỉ số khác thì cheat code không làm được. Lúc này cần đến kiến thức ASM để giải quyết.
Reset game, chơi lại từ đầu và tích vào ô Logging, bỏ tích ô Trace Once khi bắt đầu đánh địch.
Khi đánh địch xong, bỏ tích ở ô Logging và Debuger sẽ ghi lại log (lịch sử các câu lệnh đã thực thi) vào thư mục Logs. Mở file log bằng Text editor, tìm kiếm "7E:2D4D" (địa chỉ quản lý EXP mà ta đã biết từ trước) trong file log, sẽ tìm thấy kết quả
$84/AA48 BD 09 00 LDA $0009,x[$7E:2D49] A:2D40 X:2D40 Y:4EB5 P:envmxdizc
$84/AA4B 29 FF 00 AND #$00FF A:0205 X:2D40 Y:4EB5 P:envmxdizc
$84/AA4E C9 1E 00 CMP #$001E A:0005 X:2D40 Y:4EB5 P:envmxdizc
$84/AA51 B0 5A BCS $5A [$AAAD] A:0005 X:2D40 Y:4EB5 P:eNvmxdizc
$84/AA53 E2 20 SEP #$20 A:0005 X:2D40 Y:4EB5 P:eNvmxdizc
$84/AA55 BD 0D 00 LDA $000D,x[$7E:2D4D] A:0005 X:2D40 Y:4EB5 P:eNvMxdizc
$84/AA58 18 CLC A:0000 X:2D40 Y:4EB5 P:envMxdiZc
$84/AA59 6F 74 05 00 ADC $000574[$00:0574] A:0000 X:2D40 Y:4EB5 P:envMxdiZc
$84/AA5D C9 64 CMP #$64 A:0016 X:2D40 Y:4EB5 P:envMxdizc
$84/AA5F B0 0D BCS $0D [$AA6E] A:0016 X:2D40 Y:4EB5 P:eNvMxdizc
$84/AA61 9D 0D 00 STA $000D,x[$7E:2D4D] A:0016 X:2D40 Y:4EB5 P:eNvMxdizc
$84/AA64 C2 20 REP #$20 A:0016 X:2D40 Y:4EB5 P:eNvMxdizc
$84/AA66 A9 00 00 LDA #$0000 A:0016 X:2D40 Y:4EB5 P:eNvmxdizc
$84/AA69 FA PLX A:0000 X:2D40 Y:4EB5 P:envmxdiZc
$84/AA6A 28 PLP A:0000 X:4EB5 Y:4EB5 P:envmxdizc
$84/AA6B AB PLB A:0000 X:4EB5 Y:4EB5 P:envmxdizc
$84/AA6C 18 CLC A:0000 X:4EB5 Y:4EB5 P:envmxdizc
$84/AA6D 6B RTL A:0000 X:4EB5 Y:4EB5 P:envmxdizc
Dòng đầu tiên
$84/AA48 BD 09 00 LDA $0009,x[$7E:2D49]
cho thấy tại địa chỉ $84:AA48 có câu lệnh LDA $0009, X
Dạng số thập lục của dòng lệnh này là BD 09 00.
Lúc này giá trị tại X đang là 2D40, nên câu lệnh kia có ý nghĩa là tải một byte từ địa chỉ $7E:2D49 vào Accumulator (A). $7E:2D49 chính là địa chỉ quản lý Level của Siguld. Khi bật chức năng Show Hex, chọn xem RAM ở địa chỉ $7E:2D49 thì ta thấy giá trị tại đây là 05, ứng với mức Level của Siguld là 5.
Những dòng tiếp theo
$84/AA4B 29 FF 00 AND #$00FF
Dòng này cho biết giá trị (Level của Siguld) đã tải vào A sẽ được AND với giá trị $FF. AND là một phép tính logic theo bit. Có thể tham khảo thêm các trang mạng để biết chi tiết.
$84/AA4E C9 1E 00 CMP #$001E
Tại địa chỉ $84:AA4E, so sánh kết quả giá trị Level của Siguld sau khi AND với 30 ($1E).
$84/AA51 B0 5A BCS $5A [$AAAD]
Tại địa chỉ $84:AA51 cho biết, nếu kết quả của so sánh trên = 30 thì rẻ nhánh sang địa chỉ $84:AAAD. Nếu nhìn vào nội dung ở địa chỉ $84:AAAD thì ta biết đây là nơi thực hiện lệnh phụ, xử lý để Level của nhân vật không được tăng thêm.
$84/AA53 E2 20 SEP #$20
Set bit 5 của P Flag thành 1, biến sức chứa của A Register thành 8 bit.
$84/AA55 BD 0D 00 LDA $000D,x[$7E:2D4D]
Tải một byte (8 bit) tại $7E:2D4D (địa chỉ quản lý EXP của Siguld) vào A.
$84/AA58 18 CLC
Xóa Carry Flag. Luôn thực hiện lệnh này trước lệnh ADC.
$84/AA59 6F 74 05 00 ADC $000574[$00:0574]
Thêm giá trị tại $000574 vào A. $00:0574 là địa chỉ quản lý biến số EXP mà nhân vật nhận được sau khi đánh địch. Số này sẽ biến động phụ thuộc vào quân địch mà bạn đánh. Trùm và lính địch Level càng cao thì số này càng lớn, tức EXP nhận được càng nhiều.
$84/AA5D C9 64 CMP #$64
So sánh kết quả trên với 100 ($64).
$84/AA5F B0 0D BCS $0D [$AA6E]
Nếu kết quả so sánh trên bằng 100 thì nhảy đến địa chỉ $84:AA6E.
$84/AA61 9D 0D 00 STA $000D,x[$7E:2D4D]
Ghi giá trị trong A vào địa chỉ $7E:2D4D. Đây là địa chỉ quản lý EXP của Siguld.
Như vậy, qua 4 dòng lệnh đầu tiên thì ta hiểu: nếu Level của Siguld = 30 thì nhân vật này sẽ không được tăng EXP sau khi đánh địch. Mức thiết lập Max Level của FE4 là 30. Và tuy hạ cùng một tên địch, nhưng nếu Level của nhân vật càng cao thì EXP nhận được càng thấp.
Nếu EXP của nhân vật = 100 thì sẽ Level up và reset lại EXP = 0.
Nếu muốn sau khi đánh, nhân vật luôn nhận được 13 EXP, bất kể ở Level nào thì chỉ cần sửa dòng
ADC $000574
thành
ADC #$0D là được.
Dùng Lunar Address, chuyển đổi $84:AA59 sang địa chỉ PC, ta được $04AC59. Dùng Stirling để biên tập 6F 74 05 00 tại $04AC59 thành 69 0D EA EA thì dù sau khi đánh địch, Siguld luôn nhận được 13 EXP.
69 chính là mã thập lục của lệnh ADC với hằng số. EA chính là mã thập lục (hex) của lệnh NOP (không làm gì cả). Vì giá trị cũ là 6F 74 05 00 chiếm 4 byte, trong khi giá trị mới chỉ có 2 byte (69 0D) nên 2 byte sau phải được vô hiệu hóa bằng lệnh "không làm gì cả".
Nếu muốn Siguld luôn Level up sau mỗi lần đánh thì thay ADC #$0D (69 0D) thành ADC #$64 (69 64) là được. Lúc này EXP của Siguld luôn ở mức 100 nên chỉ cần sau trận đánh là được Level up.
Nếu muốn sau trận đánh, chỉ số MHP của Siguld trở thành bằng đúng với số EXP nhận được thì chỉ cần thay
STA $000D,X[$7E:2D4D]
thành
STA $0001,X[$7E:2D40]
là được. Lúc này giá trị EXP nhận được sẽ không được ghi vào địa chỉ quản lý EXP nữa mà ghi vào địa chỉ quản lý MHP ($7E:2D40). Cụ thể, tại $04AC61 ($84:AA61), thay 9D 0D 00 thành 9D 00 00 là được.
Tương tự, ta có thể biến số EXP nhận được thành các chỉ số khác.
Trên đây chỉ là một vài ứng dụng nhỏ với kiến thức ASM. Với ASM, bạn có thể làm mọi điều trong game, những điều mà không một cheat code hay một chương trình nào khác có thể làm được. Bạn hoàn toàn có thể biến nó thành một game hoàn toàn khác với ASM. Bạn có thể khiến số lần sử dụng của vũ khí tăng lên sau mỗi lần đánh, thay vì giảm xuống, hay HP tăng lên khi bị trúng đòn. Những điều phi lý/phi phàm/phi thường này chỉ có thể thực hiện khi đã nắm rõ ASM, cho nên việc chuyển ngôn ngữ của game sang một thứ tiếng nào đó chỉ là chuyện nhỏ khi bạn đã thấu rõ ngôn ngữ lập trình này.
Bài viết của Asm65816 © 2016
Đăng tại
Đăng tại
Chào Ad! Bấy lâu nay mình cũng thử cheat mấy game NES ,chẳng hạn như game contra 1,ReplyDelete
Mã cheat 30 mạng từ tay bấm 4 nút xưa : At the Title Screen press Up, Up, Down, Down, Left, Right, Left, Right, B, A, Start.
link
https://www.gamefaqs.com/nes/563399-contra/cheats
Còn chơi trên PC bằng giả lập Nestopia khi vào game thì chọn options>cheats>add>trong thẻ Raw dưới dòng address ,gõ mã code : 0032 ( không không ba hai ) ,ở dòng value : có thể gõ từ 4 đến 99 là cheat mạng.VD: chọn 30 đi cho tương ứng với tay bấm bốn nút trên.
Còn khi ta vào web : http://gamehacking.org/
thì mã lại khác nữa.
Mình muốn hỏi add có mối liên hệ nào từ những mã hack trên không ? ( cùng hack về mạng 1 trò chơi nhưng mã hack khác nhau ) Nếu có thể hack quay 1 clip ngắn có thiết minh để mình học với.Ý của mình là các mã đó thực ra là 1 nếu chuyển đổi hệ đếm HEX ,DEC ...?


text:
Trải qua ba chặng đua, cục diện của sân chơi "Cuộc đua kỳ thú 2013" đã khiến cho nhiều người bất ngờ với sự thắng thế của những cặp đôi tưởng chừng sẽ phải cuộc chơi sớm. Chứng kiến sự lên ngôi lần lượt của cặp đôi "ông già, bà già" Tiến Đạt, Hari Won và hai “chân dài” Thu Hiền, Diệp Lâm Anh, những chặng tiếp theo của "Cuộc đua kỳ thú 2013" sẽ có rất nhiều điều bất ngờ và thú vị hơn nữa.
Được di chuyển đến thành phố biển thơ mộng và xinh đẹp Nha Trang, các cặp đôi sẽ phải trải qua những thử thách oái oăm nhất. Trong khi “Kho báu dưới biển sâu” chứng kiến màn khoe thân hấp dẫn của hàng loạt những tay đua vốn là người mẫu, diễn viên thì trò “Tung hứng giữa không trung” sẽ là đỉnh điểm của nhiều bi hài trong chặng đua sắp tới. Trầm mình dưới biển và rồi treo mình trên không, các tay đua buộc sẽ phải vận dụng cả thể lực, kĩ năng và chiến thuật hợp lý để vượt qua chặng đua này.
Một số hình ảnh được hé lộ trong tập tiếp theo của "Cuộc đua kỳ thú 2013" :
Diệp Lâm Anh khoe thân hình sexy với thử thách biển
Linh Sơn đùa nghịch sau khi đã hoàn thành xong thử thách
Biểu cảm đáng yêu của Hari Won trong tập tiếp theo của Cuộc đua kỳ thú 2013
Thanh Hoa lem nhem với một thử thách khác
Nhan Phúc Vinh nghỉ ngơi cùng bạn đồng hành sau thử thách với độ cao
Sau khi đòi dừng cuộc chơi, Pha Lê cùng bạn đồng hành tiếp tục nỗ lực với những
thử thách mới
Thạch Tú

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: application/xhtml+xml

Content-Type: text/html; charset=utf-8

Connection: close

Vary: Accept-Encoding

Cache-Control: private

X-Cache: MISS from cache30


text:
Trải nghiệm tốt hơn trên app Zing MP3
Menu Sliding
Logo
App
Search
Sorry, this content is not available in your country
Bài hát tương tự
Fallen Embers
Enya
One By One
Enya
The River Sings
Enya
Anywhere Is
Enya
From Where I Am
Enya
China Roses
Enya
Hope Has A Place
Enya
Tea - House Moon
Enya
Once You Had Gold
Enya
On My Way Home
Enya
Bài hát của Enya
Diamonds On The Water
Enya
The Loxian Gate
Enya
Astra Et Luna
Enya
Sancta Maria
Enya
Dark Sky Island
Enya
I Could Never Say Goodbye
Enya
Xem thêm
BÌNH LUẬN
• 0
Bình luận
Playlist chọn lọc
561,268
Lạnh Thôi Đừng Mưa
Various Artists
6,622,901
Những Bài Hát Hay Nhất Về Mưa
Various Artists
2,620,494
Nhạc Pop Ballad Việt 2017
Various Artists
358,930
Không Còn Là Của Nhau
Various Artists
3,253,267
Nhạc Thư Giãn Tốt Nhất
Various Artists
24,007
Những Ngày Gió Lạnh
Various Artists
Quay lại
Xóa lịch sử tìm kiếm
Về đầu trang
Facebook
Google
Youtube
Zalo
Phiên bản đầy đủ
© 2015 VNG Corporation
Chủ Đề
Bảng Xếp Hạng
Top 100
Album
Video
Nghệ Sĩ
Nhạc Cá Nhân
Zing VIP
Miễn phí 3GVIP
Đăng nhập
BÌNH LUẬN • 0

markdown:
Trải nghiệm tốt hơn trên app Zing MP3
Menu Sliding
Logo
App
Search
Sorry, this content is not available in your country
Bài hát tương tự
Fallen Embers
Enya
One By One
Enya
The River Sings
Enya
Anywhere Is
Enya
From Where I Am
Enya
China Roses
Enya
Hope Has A Place
Enya
Tea - House Moon
Enya
Once You Had Gold
Enya
On My Way Home
Enya
Bài hát của Enya
Diamonds On The Water
Enya
The Loxian Gate
Enya
Astra Et Luna
Enya
Sancta Maria
Enya
Dark Sky Island
Enya
I Could Never Say Goodbye
Enya
Xem thêm
BÌNH LUẬN
• 0
Bình luận
Playlist chọn lọc
561,268
Lạnh Thôi Đừng Mưa
Various Artists
6,622,901
Những Bài Hát Hay Nhất Về Mưa
Various Artists
2,620,494
Nhạc Pop Ballad Việt 2017
Various Artists
358,930
Không Còn Là Của Nhau
Various Artists
3,253,267
Nhạc Thư Giãn Tốt Nhất
Various Artists
24,007
Những Ngày Gió Lạnh
Various Artists
Quay lại
Xóa lịch sử tìm kiếm
Về đầu trang
Facebook
Google
Youtube
Zalo
Phiên bản đầy đủ
© 2015 VNG Corporation
Chủ Đề
Bảng Xếp Hạng
Top 100
Album
Video
Nghệ Sĩ
Nhạc Cá Nhân
Zing VIP
Miễn phí 3GVIP
Đăng nhập
## BÌNH LUẬN • 0

WARC-Identified-Payload-Type: text/html

Server: nginx


text:
Trải nghiệm tốt hơn trên app Zing MP3
Menu Sliding
Logo
App
Search
Sorry, this content is not available in your country
Bài hát của Dream Dance
Touch & Go
Dream Dance
Tromba Ye Ye Ye
Dream Dance
I Can Wait
Dream Dance
Joli Gracon
Dream Dance
These Walls
Dream Dance
Border Clans
Dream Dance
Xem thêm
BÌNH LUẬN
• 0
Bình luận
Playlist chọn lọc
560,927
Lạnh Thôi Đừng Mưa
Various Artists
6,622,701
Những Bài Hát Hay Nhất Về Mưa
Various Artists
2,620,392
Nhạc Pop Ballad Việt 2017
Various Artists
358,916
Không Còn Là Của Nhau
Various Artists
3,253,257
Nhạc Thư Giãn Tốt Nhất
Various Artists
24,003
Những Ngày Gió Lạnh
Various Artists
Quay lại
Xóa lịch sử tìm kiếm
Về đầu trang
Facebook
Google
Youtube
Zalo
Phiên bản đầy đủ
© 2015 VNG Corporation
Chủ Đề
Bảng Xếp Hạng
Top 100
Album
Video
Nghệ Sĩ
Nhạc Cá Nhân
Zing VIP
Miễn phí 3GVIP
Đăng nhập
BÌNH LUẬN • 0

markdown:
Trải nghiệm tốt hơn trên app Zing MP3
Menu Sliding
Logo
App
Search
Sorry, this content is not available in your country
Bài hát của Dream Dance
Touch & Go
Dream Dance
Tromba Ye Ye Ye
Dream Dance
I Can Wait
Dream Dance
Joli Gracon
Dream Dance
These Walls
Dream Dance
Border Clans
Dream Dance
Xem thêm
BÌNH LUẬN
• 0
Bình luận
Playlist chọn lọc
560,927
Lạnh Thôi Đừng Mưa
Various Artists
6,622,701
Những Bài Hát Hay Nhất Về Mưa
Various Artists
2,620,392
Nhạc Pop Ballad Việt 2017
Various Artists
358,916
Không Còn Là Của Nhau
Various Artists
3,253,257
Nhạc Thư Giãn Tốt Nhất
Various Artists
24,003
Những Ngày Gió Lạnh
Various Artists
Quay lại
Xóa lịch sử tìm kiếm
Về đầu trang
Facebook
Google
Youtube
Zalo
Phiên bản đầy đủ
© 2015 VNG Corporation
Chủ Đề
Bảng Xếp Hạng
Top 100
Album
Video
Nghệ Sĩ
Nhạc Cá Nhân
Zing VIP
Miễn phí 3GVIP
Đăng nhập
## BÌNH LUẬN • 0


text:
lượt nghe - Được tổng hợp dựa trên số liệu lượt nghe của người dùng trên cả desktop, mobile và smart TV
Vui lòng chọn cụ thể các mục bên dưới để thông báo cho Zing MP3 biết vấn dề bạn gặp phải đối với bài hát này.
Để thông báo vi phạm bản quyền, vui lòng click vào đây (To file a copyright infringement notification, please click here)
Bài hát này không tải được vì lý do bản quyền
Trải nghiệm chất lượng âm thanh tương tự nghe CD gốc với tài khoản Zing MP3 VIP.
Đóng góp: Lời bài hát | Karaoke lyricsBáo lỗi lyrics Xóa lyrics
FM Tên thật : FM Sinh nhật : 2011 Được thành lập năm 2011, nhóm FM là một boy band gồm 4 chàng trai cá tính: Trường Sơn (trưởng nhóm), Quang Hưng, Quốc Nam và Hải Quân. Qua... Xem toàn bộ
FM Tên thật : FM Sinh nhật : 2011 Được thành lập năm 2011, nhóm FM là một boy band gồm 4 chàng trai cá tính: Trường Sơn (trưởng nhóm), Quang Hưng, Quốc Nam và Hải Quân. Qua nhiều năm hoạt động, nhóm FM đã có những bước tiến vượt bậc. Nhóm đã đi lưu diễn nhiều nơi như Trung Quốc, các tỉnh miền Tây, được tham gia các chương trình ca nhạc của đài truyền hình TP.HCM,… Sau nhiều lần thay đổi thành viên, hiện tại nhóm vẫn hoạt động thường xuyên và đã ổn định với 5 thành viên: Trường Sơn (trưởng nhóm), Hải Quân, Thành Trần, Minh Hồ và Phát Đạt: Trường Sơn: Ngày sinh: 25/01 Nơi sinh: Đồng Tháp Hải Quân: Ngày sinh: 11/04 Nơi sinh: TP.HCM Thành Trần: Ngày sinh: 05/01 Nơi sinh: TP.HCM Minh Hồ: Ngày sinh: 17/03 Nơi sinh: TP.HCM Phát Đạt: Ngày sinh: 03/12 Nơi sinh: Tiền Giang Các album đã phát hành: 1. DVD Dư Âm Tình Yêu 2. Album Hành Khúc Tuổi Trẻ 3. Album Mãi Mãi Tình Bạn 4. Album Vu Lan Bên Mẹ 5. Album Tự Hào Người Lính 6. Album Xuân Yêu Thương 7. Album Tuyển Tập Những Ca Khúc Nhạc Trẻ Mới Nhất 1 + 2 8. Album Trường Sa Đó Là Nhà 9. Album Việt Nam Ơi 10. Album Đoàn Kết Đại Đoàn Kết 11. Album Tết Việt (Xuân An Khang) 12. Album Biển Đông Đầu Sóng Ngọn Gió 13. Mini Album Giai Điệu Tự HàoRút gọn
Bình luận ()

markdown:
**lượt nghe** -
Được tổng hợp dựa trên số liệu lượt nghe của người dùng trên cả desktop, mobile và smart TV
Vui lòng chọn cụ thể các mục bên dưới để thông báo cho Zing MP3 biết vấn dề bạn gặp phải đối với bài hát này.
Để thông báo vi phạm bản quyền, vui lòng
[click vào đây](https://mp3.zing.vn/copyright/report) (To file a copyright infringement notification, please [click here](https://mp3.zing.vn/copyright/report))
Bài hát này không tải được vì lý do bản quyền
Trải nghiệm
**chất lượng âm thanh** tương tự nghe CD gốc với tài khoản **Zing MP3 VIP**.
Đóng góp:
[Lời bài hát](#) | [Karaoke lyrics](#) **
Tên thật : FM** **
Tên thật : FM**
## Bình luận ()

WARC-Truncated: length


text: Cuộc sống vốn phiền phúc, và hơn 5000 địa chỉ các loại hình dịch vụ đa dạng phục vụ cuộc sống của bạn và gia đình mà muaban.net giới thiệu tại đây, là để giảm bớt các phiền toái ấy cho bạn. Hãy đọc nó khi cần để tìm kiếm sự trợ giúp đúng lúc. Ngay cả khi chưa thực sự cần, đọc nó bạn chắc chắn sẽ có thêm những gợi ý nhằm hoàn thiện cuộc sống chính bạn. Các loại dịch vụ đa dạng và giá rẻ, hãy thử tìm và khám phá.


text:
Có 569.695 tin đăng mua bán và 188.774 thành viên
Save PS2
Mới 100%
100.000VND
12 tháng trước - 188/5 Đoàn Văn Bơ, P.9,Q.4, Tp.Hcm - Quận 4 - Hồ Chí Minh
5.129 Đã xem chi tiết
Hàng mới 100%
bh 1 đổi 1 trong vòng 1 tuần
bh 1 đổi 1 trong vòng 1 tuần
Lưu ý: Trước khi giao dịch mua bán "Save PS2 giá 100.000 VND " với Nguyễn Trọng Nhân tại 188/5 Đoàn Văn Bơ, P.9,Q.4, Tp.Hcm, hãy tìm hiểu kỹ thông tin về Nguyễn Trọng Nhân (01268 104 659). Đây là mặt hàng Mới 100% nên bạn hãy kiểm tra thật kỹ tình trạng hàng hóa, bao bì đóng gói (nếu có), đọc kỹ các chính sách bảo hành đổi trả.
Việc mua bán các bên tự thỏa thuận và chịu trách nhiệm với nhau. MuaBanNhanh chỉ là mạng xã hội hỗ trợ tất cả các thành viên đánh giá người mua lẫn người bán.
Việc mua bán các bên tự thỏa thuận và chịu trách nhiệm với nhau. MuaBanNhanh chỉ là mạng xã hội hỗ trợ tất cả các thành viên đánh giá người mua lẫn người bán.
Tìm hiểu về Nguyễn Trọng Nhân Tại đây
Cùng người bán
-
Máy game điện tử 4 nút loại tốt280.000Quận 5 - Hồ Chí Minh
-
Móc khóa búa Thor60.000Quận 5 - Hồ Chí Minh
-
Máy game PS2 ổ cứng1.690.000Quận 5 - Hồ Chí Minh
-
Máy điện tử cầm tay 4 nút loại tốt280.000Quận 5 - Hồ Chí Minh
-
Móc khóa hình con ciu60.000Quận 4 - Hồ Chí Minh
-
Quạt cầm tay 3 tốc độ có đèn pin80.000Quận 4 - Hồ Chí Minh
-
Móc khóa marvel50.000Quận 4 - Hồ Chí Minh
-
Móc Khóa búa Thor55.000Quận 4 - Hồ Chí Minh
Tìm kiếm đề nghị: Xem thêm
- Máy chơi game tại Hồ Chí Minh
- Máy chơi game tại Quận 4 Hồ Chí Minh
- Máy chơi game Mới 100%
- Máy chơi game Mới 100% tại Hồ Chí Minh
- Máy chơi game Mới 100% tại Quận 4 Hồ Chí Minh
- Cần bán/Dịch vụ Máy chơi game
- Cần bán/Dịch vụ Máy chơi game tại Hồ Chí Minh
- Cần bán/Dịch vụ Máy chơi game tại Quận 4 Hồ Chí Minh
- Cần bán/Dịch vụ Máy chơi game Mới 100% tại Hồ Chí Minh
- Cần bán/Dịch vụ Máy chơi game Mới 100% tại Quận 4
- Cần bán/Dịch vụ Máy chơi game Mới 100%

markdown:
Trang chủ
Đăng nhập
0
Đăng tin
Miễn phí
Danh mục
Xe
75.512
Bất động sản
221.943
Thương Mại Điện Tử
150.934
Dịch vụ
13.100
Nông lâm, Ngư nghiệp
7.530
Ẩm thực, Thực phẩm
7.250
Thi Công, XD, Trang Trí
25.337
Gia công, SX, CN
67.993
TIN MỚI NHẤT
bộ ps vr mới đeo khoảng 5 lần
10.200.000
VND
Đĩa game PS4 , PSN US và các phụ kiện ngành game ..
100.000
VND
Máy Chơi Game Băng Coolbaby RS-32
421.000
VND
Tay Game Ew-702 Trong Suốt Có Rung
100.000
VND
Máy chơi game băng
350.000
VND
Máy game PSP
1.000.000
VND
Cần bán máy chơi game cầm tay psp 3000
1.500.000
VND
Sang 6 Bộ Ps4 Tại Đà Nẵng
60.000.000
VND
Liên kết hữu ích
› Tài khoản VIP
› Liên hệ Mua Bán Nhanh
› Giới thiệu MuaBanNhanh.com
› Góc báo chí
› Quy chế Mua Bán Nhanh
› Chính sách bảo mật
› Điều khoản sử dụng
› Mua bán an toàn
› Mạng Xã Hội Mua Bán Nhanh
Có
569.695
tin đăng mua bán và
188.774
thành viên
Trang chủ
Máy chơi game
Hồ Chí Minh
Quận 4
Save PS2
Save PS2
Save PS2 Mới 100%, giá: 100.000đ, gọi: 01268 104 659, Quận 4 - Hồ Chí Minh
Báo cáo vi phạm
Save PS2
Mới 100%
100.000
VND
12 tháng trước - 188/5 Đoàn Văn Bơ, P.9,Q.4, Tp.Hcm
- Quận 4
- Hồ Chí Minh
5.129 Đã xem chi tiết
Hàng mới 100%
bh 1 đổi 1 trong vòng 1 tuần
Chia sẻ:
Chia sẻ:
Có
0
người thích
và
5.129
Lượt xem chi tiết
Lưu ý:
Trước khi giao dịch mua bán "
Save PS2
giá
100.000
VND
" với Nguyễn Trọng Nhân tại
188/5 Đoàn Văn Bơ, P.9,Q.4, Tp.Hcm
, hãy tìm hiểu kỹ thông tin về Nguyễn Trọng Nhân (01268 104 659). Đây là mặt hàng Mới 100% nên bạn hãy kiểm tra thật kỹ tình trạng hàng hóa, bao bì đóng gói (nếu có), đọc kỹ các chính sách bảo hành đổi trả.
Việc mua bán các bên tự thỏa thuận và chịu trách nhiệm với nhau. MuaBanNhanh chỉ là mạng xã hội hỗ trợ tất cả các thành viên đánh giá người mua lẫn người bán.
Tìm hiểu về
Nguyễn Trọng Nhân
Tại đây
Cùng người bán
Máy game điện tử 4 nút loại tốt
280.000
Quận 5 - Hồ Chí Minh
Móc khóa búa Thor
60.000
Quận 5 - Hồ Chí Minh
Máy game PS2 ổ cứng
1.690.000
Quận 5 - Hồ Chí Minh
Máy điện tử cầm tay 4 nút loại tốt
280.000
Quận 5 - Hồ Chí Minh
Móc khóa hình con ciu
60.000
Quận 4 - Hồ Chí Minh
Quạt cầm tay 3 tốc độ có đèn pin
80.000
Quận 4 - Hồ Chí Minh
Móc khóa marvel
50.000
Quận 4 - Hồ Chí Minh
Móc Khóa búa Thor
55.000
Quận 4 - Hồ Chí Minh
Tìm kiếm đề nghị:
Xem thêm
Máy chơi game tại Hồ Chí Minh
Máy chơi game tại Quận 4 Hồ Chí Minh
Máy chơi game Mới 100%
Máy chơi game Mới 100% tại Hồ Chí Minh
Máy chơi game Mới 100% tại Quận 4 Hồ Chí Minh
Cần bán/Dịch vụ Máy chơi game
Cần bán/Dịch vụ Máy chơi game tại Hồ Chí Minh
Cần bán/Dịch vụ Máy chơi game tại Quận 4 Hồ Chí Minh
Cần bán/Dịch vụ Máy chơi game Mới 100% tại Hồ Chí Minh
Cần bán/Dịch vụ Máy chơi game Mới 100% tại Quận 4
Cần bán/Dịch vụ Máy chơi game Mới 100%
Tổng quan Nguyễn Trọng Nhân
0 sao / 0 đánh giá
52
Tin đăng
124.624
Lượt xem tin đăng
Tin đăng có Bình luận
Lần tham gia bình luận
Tham gia hỏi đáp
0
Người theo dõi thành viên này
Thông tin về Nguyễn Trọng Nhân
Nguyễn Trọng Nhân
01268 104 659
188/5 Đoàn Văn Bơ, P.9,Q.4, Tp.Hcm
Xem bản đồ
Ngày tham gia
2016-05-19 17:09:52
Giá: 100.000đ, Save PS2, Nguyễn Trọng Nhân, Cần bán/Dịch vụ chuyên mục Máy chơi game tại Quận 4 - Hồ Chí Minh - 2016-07-30 18:44:54
Trang chủ
Máy chơi game
Hồ Chí Minh
Quận 4
Save PS2
Tin đăng cùng chuyên mục Máy chơi game
Báo cáo vi phạm
Máy game điện tử 4 nút loại tốt
Mới 100%
280.000
VND
4 tháng trước
- Quận 5
- Hồ Chí Minh
Nguyễn Trọng Nhân
Nguyễn Trọng Nhân
Đánh giá
(0 sao / 0 đánh giá)
+ 2
Máy chơi game
- Hàng như hình, mới 100% - Bảo hành 1 tháng - Địa chỉ: 305 Hồng Bàng, p11, q5 tpchm Mong mọi...
Xem thêm
Có
0
người thích
và
452
Lượt xem chi tiết
Xem tất cả Máy chơi game
MUABANNHANH.COM -
MUA BÁN NHANH DỄ DÀNG - CỘNG ĐỒNG SỬ DỤNG ĐIỆN THOẠI THÔNG MINH.
Nguyễn Trọng NhânNguyễn Trọng Nhân, Save PS2 Mới 100%
188/5 Đoàn Văn Bơ, P.9,Q.4, Tp.Hcm - Quận 4 - Hồ Chí Minh - Save PS2
Facebook
Google Plus
Youtube
Twitter
Email contact

Server: MuaBanNhanh

Pragma: no-cache

Strict-Transport-Security: max-age=31536000; preload

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Set-Cookie: SvID=w2|WhHlr|WhHlr; path=/


text:
Tròn 80 năm về trước, Napoleon Hill đã cho ra đời cuốn sách phát triển bản thân rất nổi tiếng có tên “Nghĩ giàu làm giàu”. Đến nay, những quan điểm được trình bày trong cuốn sách này vẫn thể hiện tính đúng đắn và còn nguyên giá trị sử dụng. Một trong số đó là quy tắc “tự kỷ ám thị”.
Về nội dung, “tự kỷ ám thị” có nghĩa nếu bạn lặp đi lặp lại một suy nghĩ trong đầu thì đến thời điểm nhất định bạn sẽ tin rằng ý nghĩ này là đúng dù có thể trên thực tế đây không phải quan điểm chính xác. Mấu chốt chính là việc nhắc lại.
Trong bóng đá, không thiếu những trường hợp quy tắc trên được sử dụng vì mục đích cụ thể nào đó. Tại cuộc họp báo trước trận đấu với Liverpool hồi năm 2015, HLV của Newcastle (khi đó là Steve McClaren), để tăng sự tự tin cho các cầu thủ, đã sử dụng hơn 30 lần cụm từ "tự tin" trong bài phát biểu của mình.
Thế nhưng, nếu so sánh với Mourinho - một bậc thầy về tâm lý, nhà cầm quân người Anh chắc chắn còn nhiều thua kém.
Nhìn lại mùa giải 2016-2017, Man United không thực sự thành công. Mặc dù bỏ ra gần 300 triệu bảng cho thị trường chuyển nhượng trong 2 năm gần nhất, Quỷ đỏ nằm ngoài cuộc đua vô địch kể từ tháng 10 với chỉ vỏn vẹn 5 chiến thắng trong 14 trận đầu tiên và chắc chắn nằm ngoài top 4 khi tháng 5 kết thúc.
Hồi đầu mùa khi mới thay Van Gaal ngồi vào ghế nóng tại Old Trafford, Mourinho từng tuyên bố: “Mục tiêu của chúng tôi là nằm trong top 4. Điều mà chúng tôi đã không làm được 3 năm qua”.
Đến nay, mục tiêu đó đã đổ vỡ nhưng Mourinho biết cách để khiến những người hâm mộ Quỷ đỏ bớt chú ý đến vị trí thứ 6 của Man United hiện tại bằng việc tìm ra nguyên nhân khách quan và lặp đi lặp lại.
Trong vài tuần gần đây, người ta bỗng thấy chiến lược gia người Bồ Đào Nha nhiều lần phát biểu sẽ từ bỏ Premier League để tập trung cho đấu trường Europa League. Mourinho đề cập đến điều ấy trong buổi họp báo trước 3 trận đấu gần nhất gặp Swansea, Arsenal và Tottenham.
Vì thế, Mourinho chẳng cần phải bào chữa với việc tung ra một đội hình lạ lẫm và chỉ có 1 trong 9 điểm tối đa đó. Real, Atletico, Monaco thậm chí cả Ajax đều ở hoàn cảnh tương tự và họ cũng sử dụng chính sách xoay vòng nhưng Zidane, Simeone hay Jardim chẳng hề có những phát biểu như của Mourinho.
Để trận hòa Swansea cuối tháng trước trở thành một tai nạn, Mourinho ca thán: “Chúng tôi đã bị trừng phạt vì thi đấu quá tốt để phải tham gia quá nhiều mặt trận. Phải chơi 9 trận trong vòng 1 tháng thì không ai có thể chịu nổi”. Thế nhưng, Barcelona, Bayern, Dortmund, Real cũng chơi tương tự số trận đó trong cùng thời gian.
Với việc có vé dự chung kết Europa League ở Stockholm, Man United sẽ chơi tổng cộng 64 trận đấu ở mùa giải năm nay. Lời phàn nàn về lịch thi đấu có lẽ sẽ bớt nhận được những lời cảm thông khi Van Gaal năm ngoái cũng dẫn dắt các học trò thi đấu tới 59 trận.
Ngoài ra, Mourinho coi những chấn thương là nguyên nhân cho việc Man United thi đấu không tốt và thậm chí còn đòi xỏ giày ra sân. Khi khác, ông lại đổ lỗi cho một vài cá nhân nào đó. Lần lượt Luke Shaw, Smalling, Mkhitaryan, Martial và cả thần đồng Rashford trở thành nạn nhân bất đắc dĩ.
Một số người hâm mộ vì thế tin rằng thành tích của Quỷ đỏ đến hiện tại là không đến nỗi tệ và Mourinho đã có một năm thành công.
Câu hỏi đặt ra, tại sao Mourinho phải tìm mọi cách đẩy xa những lời chỉ trích? Phải chăng vị chiến lược gia người Bồ Đào Nha đang sợ hãi? Rất có thể.
Trong chuỗi 25 trận bất bại của Man United tại Premier League vừa qua, 12 trận đội chủ sân Old Trafford có kết quả hòa. Nguyên nhân Man United hòa quá nhiều xuất phát từ việc Mourinho chấp nhận để các học trò chơi xấu xí để có 1 điểm như cách họ sử dụng trong trận derby Manchester hơn là dồn lên tấn công tìm chiến thắng.
Đầu mùa giải, sau chuỗi thắng lợi liên tiếp Guardiola từng muốn nếm trải hương vị thất bại để nhìn ra những điểm yếu của Man City nhưng Mourinho lại muốn duy trì sự bất bại để phần nào che giấu đi sự kém cỏi.
Hôm 16/4, Mourinho và các học trò có trận đấu hay nhất mùa giải khi đánh bại nhà vô địch Chelsea với 2 bàn không gỡ, trong đó dấu ấn chiến thuật của vị chiến lược gia 53 tuổi là đậm nét. Mourinho vội nhận mọi công lao mà bỏ qua các học trò.
Phía đối diện Conte điềm đạm chịu trách nhiệm cho màn trình diễn kém cỏi. Conte có thể phải lấy giấy bút ra học hỏi vị tiền bối về cách bài binh bố trận ở màn so tài đó nhưng có một thứ "Người đặc biệt" nên tìm đến Conte, đó là sự khiêm nhường.
Bởi nhờ sự khiêm nhường đó mà Conte đã nâng tầm Chelsea thành công sau chuỗi thành tích tệ hại hồi tháng 9 để đến hiện tại từ vị trí thứ 6, Man United phải ngước nhìn The Blues ở trên đỉnh nước Anh.
Bình luận

markdown:
Tròn 80 năm về trước, Napoleon Hill đã cho ra đời cuốn sách phát triển bản thân rất nổi tiếng có tên “Nghĩ giàu làm giàu”. Đến nay, những quan điểm được trình bày trong cuốn sách này vẫn thể hiện tính đúng đắn và còn nguyên giá trị sử dụng. Một trong số đó là quy tắc “tự kỷ ám thị”.
Về nội dung, “tự kỷ ám thị” có nghĩa nếu bạn lặp đi lặp lại một suy nghĩ trong đầu thì đến thời điểm nhất định bạn sẽ tin rằng ý nghĩ này là đúng dù có thể trên thực tế đây không phải quan điểm chính xác. Mấu chốt chính là việc nhắc lại.
Trong bóng đá, không thiếu những trường hợp quy tắc trên được sử dụng vì mục đích cụ thể nào đó. Tại cuộc họp báo trước trận đấu với Liverpool hồi năm 2015, HLV của Newcastle (khi đó là Steve McClaren), để tăng sự tự tin cho các cầu thủ, đã sử dụng hơn 30 lần cụm từ "tự tin" trong bài phát biểu của mình.
Thế nhưng, nếu so sánh với Mourinho - một bậc thầy về tâm lý, nhà cầm quân người Anh chắc chắn còn nhiều thua kém.
Nhìn lại mùa giải 2016-2017, Man United không thực sự thành công. Mặc dù bỏ ra gần 300 triệu bảng cho thị trường chuyển nhượng trong 2 năm gần nhất, Quỷ đỏ nằm ngoài cuộc đua vô địch kể từ tháng 10 với chỉ vỏn vẹn 5 chiến thắng trong 14 trận đầu tiên và chắc chắn nằm ngoài top 4 khi tháng 5 kết thúc.
Hồi đầu mùa khi mới thay Van Gaal ngồi vào ghế nóng tại Old Trafford, Mourinho từng tuyên bố: “Mục tiêu của chúng tôi là nằm trong top 4. Điều mà chúng tôi đã không làm được 3 năm qua”.
Đến nay, mục tiêu đó đã đổ vỡ nhưng Mourinho biết cách để khiến những người hâm mộ Quỷ đỏ bớt chú ý đến vị trí thứ 6 của Man United hiện tại bằng việc tìm ra nguyên nhân khách quan và lặp đi lặp lại.
|
|![]()
|Mourinho ra mắt Quỷ đỏ với nhiều hy vọng từ người hâm mộ.|
Trong vài tuần gần đây, người ta bỗng thấy chiến lược gia người Bồ Đào Nha nhiều lần phát biểu sẽ từ bỏ Premier League để tập trung cho đấu trường Europa League. Mourinho đề cập đến điều ấy trong buổi họp báo trước 3 trận đấu gần nhất gặp Swansea, Arsenal và Tottenham.
Vì thế, Mourinho chẳng cần phải bào chữa với việc tung ra một đội hình lạ lẫm và chỉ có 1 trong 9 điểm tối đa đó. Real, Atletico, Monaco thậm chí cả Ajax đều ở hoàn cảnh tương tự và họ cũng sử dụng chính sách xoay vòng nhưng Zidane, Simeone hay Jardim chẳng hề có những phát biểu như của Mourinho.
**Huấn luyện viên người Bồ Đào Nha hài lòng với trận thua trước Tottenham, đồng thời khẳng định đội bóng của ông vốn dĩ đã không còn thiết tha mặt trận Premier League.** [Mourinho khẳng định MU không muốn đá Premier League](/video-mourinho-khang-dinh-mu-khong-muon-da-premier-league-post746309.html)
Để trận hòa Swansea cuối tháng trước trở thành một tai nạn, Mourinho ca thán: “Chúng tôi đã bị trừng phạt vì thi đấu quá tốt để phải tham gia quá nhiều mặt trận. Phải chơi 9 trận trong vòng 1 tháng thì không ai có thể chịu nổi”. Thế nhưng, Barcelona, Bayern, Dortmund, Real cũng chơi tương tự số trận đó trong cùng thời gian.
Với việc có vé dự chung kết Europa League ở Stockholm, Man United sẽ chơi tổng cộng 64 trận đấu ở mùa giải năm nay. Lời phàn nàn về lịch thi đấu có lẽ sẽ bớt nhận được những lời cảm thông khi Van Gaal năm ngoái cũng dẫn dắt các học trò thi đấu tới 59 trận.
|
|![]()
|Van Gaal cùng Man United vô địch cúp FA 2016.|
Ngoài ra, Mourinho coi những chấn thương là nguyên nhân cho việc Man United thi đấu không tốt và thậm chí còn đòi xỏ giày ra sân. Khi khác, ông lại đổ lỗi cho một vài cá nhân nào đó. Lần lượt Luke Shaw, Smalling, Mkhitaryan, Martial và cả thần đồng Rashford trở thành nạn nhân bất đắc dĩ.
Một số người hâm mộ vì thế tin rằng thành tích của Quỷ đỏ đến hiện tại là không đến nỗi tệ và Mourinho đã có một năm thành công.
Câu hỏi đặt ra, tại sao Mourinho phải tìm mọi cách đẩy xa những lời chỉ trích? Phải chăng vị chiến lược gia người Bồ Đào Nha đang sợ hãi? Rất có thể.
Trong chuỗi 25 trận bất bại của Man United tại Premier League vừa qua, 12 trận đội chủ sân Old Trafford có kết quả hòa. Nguyên nhân Man United hòa quá nhiều xuất phát từ việc Mourinho chấp nhận để các học trò chơi xấu xí để có 1 điểm như cách họ sử dụng trong trận derby Manchester hơn là dồn lên tấn công tìm chiến thắng.
Đầu mùa giải, sau chuỗi thắng lợi liên tiếp Guardiola từng muốn nếm trải hương vị thất bại để nhìn ra những điểm yếu của Man City nhưng Mourinho lại muốn duy trì sự bất bại để phần nào che giấu đi sự kém cỏi.
Hôm 16/4, Mourinho và các học trò có trận đấu hay nhất mùa giải khi đánh bại nhà vô địch Chelsea với 2 bàn không gỡ, trong đó dấu ấn chiến thuật của vị chiến lược gia 53 tuổi là đậm nét. Mourinho vội nhận mọi công lao mà bỏ qua các học trò.
|
|![]()
|Chelsea của Conte thua một trận đánh trước Man United nhưng thắng cả mùa giải.|
Phía đối diện Conte điềm đạm chịu trách nhiệm cho màn trình diễn kém cỏi. Conte có thể phải lấy giấy bút ra học hỏi vị tiền bối về cách bài binh bố trận ở màn so tài đó nhưng có một thứ "Người đặc biệt" nên tìm đến Conte, đó là sự khiêm nhường.
Bởi nhờ sự khiêm nhường đó mà Conte đã nâng tầm Chelsea thành công sau chuỗi thành tích tệ hại hồi tháng 9 để đến hiện tại từ vị trí thứ 6, Man United phải ngước nhìn The Blues ở trên đỉnh nước Anh.
Bình luận

X-Cache: MISS from xCache-11419090


text:
Nga-Syria phải chấp nhận một thực tế là IS có thể “biến mất” trên chiến trường…
Trong những ngày gần đây, khi quân đội Ả Rập Syria (SAA), lực lượng quân sự địa phương NDF, liên minh Iran, Hezbollah dưới sự hỗ trợ của VKS Nga đã thu được những kết quả quân sự to lớn, lực lượng IS đang bị buộc phải ròi bỏ những vị trí chiến lược quan trọng để rút về Raqqa và phía Tây sông Euphrates thì họ phải đối mặt với một nhân tố mà trước đây đã vắng mặt, đó là sự hiện diện ngày càng tăng của quân đội liên quân do Hoa Kỳ trên lãnh thổ Syria.
Liên minh chống IS do Hoa Kỳ lãnh đạo đã phản ứng với các chiến thắng của SAA và quyết định ngăn chặn SAA, NDF và lực lượng ủng hộ chính phủ khi họ mở các hoạt động ở về hướng Đông Nam Syria giáp với biên giới Jordan.
Liên minh chống IS do Mỹ đứng đầu không muốn chính quyền Assad giành thắng lợi, vì vậy, những con bài cuối cùng được lật, nói cách khác là bất kỳ những hành động gì khiến Assad thất bại, khiến hoạt động quân sự của Assad gặp nhiều khó khăn là Liên minh Mỹ không từ.
1, Thỏa thuận bí mật với IS tại Raqqa!
Bộ quốc phòng Nga tố cáo Lực lượng Dân chủ Syria (SDF) đã đưa ra một thỏa thuận bí mật với các tên khủng bố IS ở thành phố Raqqa, theo đó IS sẽ có một hành lang mở để rút khỏi Raqqa nếu các thành viên của nó được triển khai lại đến tỉnh Homs để chống lại các lực lượng chính phủ gần Palmyra. Hành lang này sẽ nằm ở phía nam của Raqqa.
Trong khi đó SDF lại tố ngược lại là Nga mới có thỏa thuận với IS trong khu vực
Palmyra!!!
Dư luận đã biết rõ ràng SDF do Mỹ hậu thuẫn đã chính thức thực hiện ít nhất hai thỏa thuận an toàn với những kẻ khủng bố IS. Những thông tin này được khẳng định bởi liên minh do Mỹ lãnh đạo bằng việc họ đã tuyên bố và xác nhận cả thế giới đều nghe, biết:
Lần thứ nhất, theo SDF, khoảng 500 chiếc xe chiến đấu với quân khủng bố IS và những người ủng hộ
ISIS (cũng như một số lượng thường dân bị bắt làm con
tin) được SDF ở thành phố Manbij đưa ra khỏi thành phố Manbij vào năm 2016.
Lần thứ 2, SDF cho phép khoảng 70 quân khủng bố IS rời khỏi khu vực đập Tabqa một cách tự do vào năm 2017. (Ngoài ra thả dù nhầm, cung cấp vũ khí…cho IS của Liên minh Mỹ thì chưa công khai…)
Trong khi đó, không có báo cáo khẳng định rằng liên minh Syria-Iran-Nga đã từng làm một thỏa thuận với IS cho đến nay.
Hiện tại thì tại khu vực
Palmyra,
IS và liên minh Nga-Syria đang chiến đấu khốc liệt, đặc biệt như trận ngày
26/5, VKS Nga đã thiêu hủy 120 lính IS và gần 60 xe pháo các loại. Phải chăng
đó là thỏa thuận kiểu Nga?
2, IS đổi sang FAS…
Trước đây, chúng ta đã nghe bộ quốc phòng Mỹ than thở về việc huấn luyện 5000 quân FSA (Quân đội Syria tự do) tồi bại như thế nào…Nghĩa là 5000 quân, sau khi cung cấp đầy đủ vũ khí trang bị thì trốn hết, chỉ còn lại 5 người... “một kỷ lục về huấn luyện đạo tạo thấp kém từ chiến tranh thế giới lần 2 đến nay” như Mỹ tự nhận...
Giờ đây, suy nghĩ lại thì mới biết là bị mắc mưu Mỹ…
Nguồn tin chính phủ
Syria
cho biết: “Một số chỉ huy IS đã tham gia FSA hoạt động tại khu vực Al-Tanf trên
biên giới Syria-Iraq.
Theo báo cáo, hai cựu chỉ huy của IS, "Ghassan al-Sanki" và "Mahmoud Faraj" đã đến khu vực được kiểm soát bởi FSA và Lực Lượng đặc biệt Hoa Kỳ trong sa mạc Syria từ Deir Ezzor.
Người ta tin rằng "Ghassan al-Sanki" là một trong những chỉ huy nổi tiếng nhất của IS tại thị trấn Al-Bukamal nằm gần biên giới Syria-Iraq. Nhiều tên khủng bố IS ở Deir Ezzor được cho là những lính cũ của FSA tham gia vào IS khi đánh chiếm những mỏ dầu trong khu vực. Bây giờ chúng đang rời IS để gia nhập vào FSA
FSA ở Deir Ezzor được biết đến nhờ mối liên hệ chặt chẽ với IS ở
Iraq và Syria
và các hoạt động buôn lậu, tuyển dụng thánh chiến và vũ khí vào lãnh thổ Iraq. FSA
ở Deir Ezzor là tổ chức đầu tiên thiết lập thương mại dầu mỏ bất hợp pháp với
Thổ Nhĩ Kỳ.
Vào năm 2013, FSA và IS đã phát động cuộc tấn công chung vào các vị trí của quân đội Iraq tại cửa khẩu biên giới Al-Yarobiah, vì vậy, người ta tin rằng FSA ở Deir Ezzor không phải là sự lựa chọn tốt nhất nếu ai đó đang tìm kiếm một đồng minh cho cuộc chiến chống IS ở biên giới Syria-Iraq”…
Té ra FSA không phải là dạng vừa và Mỹ đâu khờ dại khi huấn luyện, trang bị vũ khí cho 5000 tên mà biến đi đâu hết còn lại 5 người…Chúng đâu hết? Hỏi IS và đố Nga-Syria và Liên minh chống IS của Mỹ tìm cho ra…
Tại sao IS bị VKS Nga hủy diệt khi tập kích Zaza?
Trước hết chúng ta hãy xem bản đồ dưới và ngày 26/5 khi quân Assad đã phát triển thuận lợi vào phía ĐN giáp biên giới
Jordan,
họ đang tiến sát vùng đồng bằng phía tây Al-Tanf.
Một lực lượng lớn các chiến binh Jaish al-Islam ở phía đông Qalamoun bị SAA bao vây cô lập khi đã ngăn chặn thành công mọi cố gắng kết nối với nhóm chiến binh do Mỹ hậu thuận tại vùng biên giới Jordan
Nhóm Jaish al-Islam cố gắng phá vây để tiến về Al-Tanf nhưng không thành
Một sự trùng hợp là thời gian đó, một lực lượng lớn của IS gồm cả xe quân sự đã hành quân từ Deir Ezzor đến tấn công và ngã 3 Zaza (Bản đồ dưới)
Mũi tập kích của IS vào Zaza nhưng bị VKS Nga hủy diệt trên đường hành quân tiếp cận.
VKS Nga và không quân
Syria
lập tức xuất kích…toàn bộ số phương tiện hành quân trên đường bị phá hủy cùng
với hơn 120 tên IS. Nga cho rằng, đây là một trận không kích tiêu diệt nhiều
sinh lực địch nhất từ trước tới giờ.
Nếu như IS không có mối liên hệ gì với FSA thì về logic chiến thuật, vị trí IS cần tấn công là
Arak phía Đông Palmyra là hợp lý. Thế nhưng, tiến đánh Zaza
khi cơ động một quãng đường dài trên sa mạc thì chỉ làm mồi cho VKS Nga là điều
vô lý.
Tuy nhiên, vấn đề sẽ trở nên có lý nếu như bí mật, qua được mắt VKS Nga mà đánh chiếm được Zaza thì IS trở thành lá chắn vững chắc cho Al-Tanf và ngăn chặn sự phát triển của SAA về hướng
Jordan
IS đã thực hiện kế hoạch tác chiến này, và chứng tỏ IS cứu viện cho vùng đệm của Mỹ và liên minh chống IS đã đang bị Nga –
Syria
làm phá sản.
Rõ ràng là nếu như có thỏa thuận của SDF với IS tại Raqqa thì dư luận không ngạc nhiên vì tại chiến dịch Mosul, hơn 9000 quân IS cũng được “giới thiệu” sang Syria đó sao? Hoặc chuyện quân khủng bố “đổi tên, thay áo”, hoặc chuyện chúng tấn công quân chính phủ Assad để giai vây cho nhau…là chuyền đã đang xảy ra trên chiến trường. Và, chẳng ai lạ gì mối quan hệ của Liên minh Mỹ với IS.
Vấn đề là Nga-Syria cảnh giác để chống lại như thế nào thôi, bởi thực ra, Nga-Syria chưa từng được SDF và IS ưu ái bao giờ…May mắn là Nga-Syria đã có những bài học tại Alepoo,
Palmyra,
Hama nên đủ
sáng suốt trong kế hoạch tác chiến của mình.

markdown:
*Nga-Syria phải chấp nhận một thực tế là IS có thể “biến mất” trên chiến trường…*
Trong những ngày gần đây, khi quân đội Ả Rập Syria (SAA), lực lượng quân sự địa phương NDF, liên minh Iran, Hezbollah dưới sự hỗ trợ của VKS Nga đã thu được những kết quả quân sự to lớn, lực lượng IS đang bị buộc phải ròi bỏ những vị trí chiến lược quan trọng để rút về Raqqa và phía Tây sông Euphrates thì họ phải đối mặt với một nhân tố mà trước đây đã vắng mặt, đó là sự hiện diện ngày càng tăng của quân đội liên quân do Hoa Kỳ trên lãnh thổ Syria.
Liên minh chống IS do Hoa Kỳ lãnh đạo đã phản ứng với các chiến thắng của SAA và quyết định ngăn chặn SAA, NDF và lực lượng ủng hộ chính phủ khi họ mở các hoạt động ở về hướng Đông Nam Syria giáp với biên giới Jordan.
Liên minh chống IS do Mỹ đứng đầu không muốn chính quyền Assad giành thắng lợi, vì vậy, những con bài cuối cùng được lật, nói cách khác là bất kỳ những hành động gì khiến Assad thất bại, khiến hoạt động quân sự của Assad gặp nhiều khó khăn là Liên minh Mỹ không từ.
**1, Thỏa thuận bí mật với IS tại Raqqa!**
Bộ quốc phòng Nga tố cáo Lực lượng Dân chủ Syria (SDF) đã đưa ra một thỏa thuận bí mật với các tên khủng bố IS ở thành phố Raqqa, theo đó IS sẽ có một hành lang mở để rút khỏi Raqqa nếu các thành viên của nó được triển khai lại đến tỉnh Homs để chống lại các lực lượng chính phủ gần Palmyra. Hành lang này sẽ nằm ở phía nam của Raqqa.
Trong khi đó SDF lại tố ngược lại là Nga mới có thỏa thuận với IS trong khu vực
Palmyra!!!
Dư luận đã biết rõ ràng SDF do Mỹ hậu thuẫn đã chính thức thực hiện ít nhất hai thỏa thuận an toàn với những kẻ khủng bố IS. Những thông tin này được khẳng định bởi liên minh do Mỹ lãnh đạo bằng việc họ đã tuyên bố và xác nhận cả thế giới đều nghe, biết:
Lần thứ nhất, theo SDF, khoảng 500 chiếc xe chiến đấu với quân khủng bố IS và những người ủng hộ
ISIS (cũng như một số lượng thường dân bị bắt làm con
tin) được SDF ở thành phố Manbij đưa ra khỏi thành phố Manbij vào năm 2016.
Lần thứ 2, SDF cho phép khoảng 70 quân khủng bố IS rời khỏi khu vực đập Tabqa một cách tự do vào năm 2017. (Ngoài ra thả dù nhầm, cung cấp vũ khí…cho IS của Liên minh Mỹ thì chưa công khai…)
Trong khi đó, không có báo cáo khẳng định rằng liên minh Syria-Iran-Nga đã từng làm một thỏa thuận với IS cho đến nay.
Hiện tại thì tại khu vực
Palmyra,
IS và liên minh Nga-Syria đang chiến đấu khốc liệt, đặc biệt như trận ngày
26/5, VKS Nga đã thiêu hủy 120 lính IS và gần 60 xe pháo các loại. Phải chăng
đó là thỏa thuận kiểu Nga? **2, IS đổi sang FAS…**
Trước đây, chúng ta đã nghe bộ quốc phòng Mỹ than thở về việc huấn luyện 5000 quân FSA (Quân đội Syria tự do) tồi bại như thế nào…Nghĩa là 5000 quân, sau khi cung cấp đầy đủ vũ khí trang bị thì trốn hết, chỉ còn lại 5 người... “một kỷ lục về huấn luyện đạo tạo thấp kém từ chiến tranh thế giới lần 2 đến nay” như Mỹ tự nhận...
Giờ đây, suy nghĩ lại thì mới biết là bị mắc mưu Mỹ…
Nguồn tin chính phủ
Syria
cho biết: “Một số chỉ huy IS đã tham gia FSA hoạt động tại khu vực Al-Tanf trên
biên giới Syria-Iraq.
Theo báo cáo, hai cựu chỉ huy của IS, "Ghassan al-Sanki" và "Mahmoud Faraj" đã đến khu vực được kiểm soát bởi FSA và Lực Lượng đặc biệt Hoa Kỳ trong sa mạc Syria từ Deir Ezzor.
Người ta tin rằng "Ghassan al-Sanki" là một trong những chỉ huy nổi tiếng nhất của IS tại thị trấn Al-Bukamal nằm gần biên giới Syria-Iraq. Nhiều tên khủng bố IS ở Deir Ezzor được cho là những lính cũ của FSA tham gia vào IS khi đánh chiếm những mỏ dầu trong khu vực. Bây giờ chúng đang rời IS để gia nhập vào FSA
FSA ở Deir Ezzor được biết đến nhờ mối liên hệ chặt chẽ với IS ở
Iraq và Syria
và các hoạt động buôn lậu, tuyển dụng thánh chiến và vũ khí vào lãnh thổ Iraq. FSA
ở Deir Ezzor là tổ chức đầu tiên thiết lập thương mại dầu mỏ bất hợp pháp với
Thổ Nhĩ Kỳ.
Vào năm 2013, FSA và IS đã phát động cuộc tấn công chung vào các vị trí của quân đội Iraq tại cửa khẩu biên giới Al-Yarobiah, vì vậy, người ta tin rằng FSA ở Deir Ezzor không phải là sự lựa chọn tốt nhất nếu ai đó đang tìm kiếm một đồng minh cho cuộc chiến chống IS ở biên giới Syria-Iraq”…
Té ra FSA không phải là dạng vừa và Mỹ đâu khờ dại khi huấn luyện, trang bị vũ khí cho 5000 tên mà biến đi đâu hết còn lại 5 người…Chúng đâu hết? Hỏi IS và đố Nga-Syria và Liên minh chống IS của Mỹ tìm cho ra…
**Tại sao IS bị VKS Nga hủy diệt khi tập kích Zaza?**
Trước hết chúng ta hãy xem bản đồ dưới và ngày 26/5 khi quân Assad đã phát triển thuận lợi vào phía ĐN giáp biên giới
Jordan,
họ đang tiến sát vùng đồng bằng phía tây Al-Tanf.
Một lực lượng lớn các chiến binh Jaish al-Islam ở phía đông Qalamoun bị SAA bao vây cô lập khi đã ngăn chặn thành công mọi cố gắng kết nối với nhóm chiến binh do Mỹ hậu thuận tại vùng biên giới Jordan
**Nhóm Jaish al-Islam cố gắng phá vây để tiến về Al-Tanf nhưng không thành**
Một sự trùng hợp là thời gian đó, một lực lượng lớn của IS gồm cả xe quân sự đã hành quân từ Deir Ezzor đến tấn công và ngã 3 Zaza (Bản đồ dưới)
**Mũi tập kích của IS vào Zaza nhưng bị VKS Nga hủy diệt trên đường hành quân tiếp cận.**
VKS Nga và không quân
Syria
lập tức xuất kích…toàn bộ số phương tiện hành quân trên đường bị phá hủy cùng
với hơn 120 tên IS. Nga cho rằng, đây là một trận không kích tiêu diệt nhiều
sinh lực địch nhất từ trước tới giờ.
Nếu như IS không có mối liên hệ gì với FSA thì về logic chiến thuật, vị trí IS cần tấn công là
Arak phía Đông Palmyra là hợp lý. Thế nhưng, tiến đánh Zaza
khi cơ động một quãng đường dài trên sa mạc thì chỉ làm mồi cho VKS Nga là điều
vô lý.
Tuy nhiên, vấn đề sẽ trở nên có lý nếu như bí mật, qua được mắt VKS Nga mà đánh chiếm được Zaza thì IS trở thành lá chắn vững chắc cho Al-Tanf và ngăn chặn sự phát triển của SAA về hướng
Jordan
IS đã thực hiện kế hoạch tác chiến này, và chứng tỏ IS cứu viện cho vùng đệm của Mỹ và liên minh chống IS đã đang bị Nga –
Syria
làm phá sản.
Rõ ràng là nếu như có thỏa thuận của SDF với IS tại Raqqa thì dư luận không ngạc nhiên vì tại chiến dịch Mosul, hơn 9000 quân IS cũng được “giới thiệu” sang Syria đó sao? Hoặc chuyện quân khủng bố “đổi tên, thay áo”, hoặc chuyện chúng tấn công quân chính phủ Assad để giai vây cho nhau…là chuyền đã đang xảy ra trên chiến trường. Và, chẳng ai lạ gì mối quan hệ của Liên minh Mỹ với IS.
Vấn đề là Nga-Syria cảnh giác để chống lại như thế nào thôi, bởi thực ra, Nga-Syria chưa từng được SDF và IS ưu ái bao giờ…May mắn là Nga-Syria đã có những bài học tại Alepoo,
Palmyra,
Hama nên đủ
sáng suốt trong kế hoạch tác chiến của mình.

Server: GSE

X-Content-Type-Options: nosniff

Cache-Control: private, max-age=0

X-XSS-Protection: 1; mode=block

Content-Type: text/html; charset=UTF-8


text:
Địa chỉ: B7, TT3, Bắc Linh Đàm, Hoàng Mai, Hà NộiDự án: 0983.117896 - 0961.438868 - 0981.686887
Cố định: 024.35.402.270 (Ext: 203)

X-Frame-Options: SAMEORIGIN

Strict-Transport-Security: max-age=2592000; preload

Set-Cookie: CakeCookie[productsSeen]=%5B%22ghe-don-hoa-phat-sf12-1-pvc%22%5D; expires=Mon, 20-Nov-2017 19:41:50 GMT; Max-Age=86400; path=/

X-Micro-Cache: MISS

X-Supported-By: Kloxo-MR 7.0

Cache-Control: no-store, no-cache, must-revalidate, max-age=0


text:
Tivi LED SkyWorth 40E310 40 inch
Giá hãng: 5.990.000₫5.490.000₫(Tiết kiệm: 500.000₫)
Khuyến mại áp dụng:
- 1 Nồi cơm điện MIDEA MRCM18SE, 1.8L (Áp dụng: 01/11/2017 - 30/11/2017)
Gọi mua hàng: 0904.881169 - 1900.6619(từ 8h15 đến 17h15 hàng ngày)
SKU: 40E310 | MODEL: 40E310
Đến xem hàng ở Hà Nội
Đến xem hàng ở Miền Bắc:
- KM13+500 Quốc lộ 1A, Ngọc Hồi, Thanh Trì Tạm hết hàng
- KM12 Quốc lộ 32, Phúc Diễn, Bắc Từ Liêm Tạm hết hàng
- Số 38 Nguyễn Chánh – Đường Phùng Hưng mới, Phường Phúc La, Quận Hà Đông Tạm hết hàng
- 346 Nguyễn Trãi, Nam Từ Liêm Tạm hết hàng
- Số 8 Lê Trọng Tấn, quận Thanh Xuân Tạm hết hàng
- Số 2, Long Biên 2, Ngọc Lâm, Long Biên Tạm hết hàng
- 76 Nguyễn Trãi, quận Thanh Xuân Tạm hết hàng
- 173 Xuân Thủy, quận Cầu Giấy Tạm hết hàng
- 324 Tây Sơn, quận Đống Đa Tạm hết hàng
- Số 240 Tôn Đức Thắng, quận Đống Đa Tạm hết hàng
- Số 2175 Đại lộ Hùng Vương, Tp. Việt Trì Tạm hết hàng
- Số 04 Nguyễn Văn Cừ, P. Ninh Xá, TP Bắc Ninh Tạm hết hàng
- Số 4 Bạch Đằng, Hạ Lý, Hồng Bàng Tạm hết hàng
- Số 240 Lê Hoàn, Ba Đình, TP. Thanh Hóa Tạm hết hàng
- Part Tower đối diện ga Phủ Lý, Lê Hoàn, Phủ Lý Tạm hết hàng
- Số 90 Lê Hồng Phong, Vân Giang, Tp. Ninh Bình Tạm hết hàng
- Tòa nhà Hapro, Quảng trường 3/2, Tp. Bắc Giang Tạm hết hàng
- Số 87 Quang Trung, P. Quang Trung, Tp. Nam Định Tạm hết hàng
- 578 Trần Phú, Từ Sơn, Tp. Bắc Ninh Tạm hết hàng
- Số 275 Lạch Tray, Tp. Hải Phòng Tạm hết hàng
- Số 1 Hai Bà Trưng, tx. Phúc Yên, Vĩnh Phúc Tạm hết hàng
- Số 1454 Hùng Vương, Việt Trì, Phú Thọ Tạm hết hàng

markdown:
# Tivi LED SkyWorth 40E310 40 inch
Giá hãng:
**5.990.000₫** **5.490.000₫**(Tiết kiệm: 500.000₫) **Khuyến mại áp dụng:** 1 Nồi cơm điện MIDEA MRCM18SE, 1.8L (Áp dụng: 01/11/2017 - 30/11/2017) **0904.881169**- **1900.6619**(từ 8h15 đến 17h15 hàng ngày) **SKU:**40E310 | **MODEL**: 40E310 **Đến xem hàng ở Hà Nội** [KM13+500 Quốc lộ 1A, Ngọc Hồi, Thanh Trì Tạm hết hàng](https://pico.vn/map/33/pico-ngoc-hoi) [KM12 Quốc lộ 32, Phúc Diễn, Bắc Từ Liêm Tạm hết hàng](https://pico.vn/map/34/pico-phuc-dien) [Số 38 Nguyễn Chánh – Đường Phùng Hưng mới, Phường Phúc La, Quận Hà Đông Tạm hết hàng](https://pico.vn/map/36/pico-ha-dong) [346 Nguyễn Trãi, Nam Từ Liêm Tạm hết hàng](https://pico.vn/map/32/pico-nguyen-trai-2) [Số 8 Lê Trọng Tấn, quận Thanh Xuân Tạm hết hàng](https://pico.vn/map/24/so-8-le-trong-tan-thanh-xuan-ha-noi) [Số 2, Long Biên 2, Ngọc Lâm, Long Biên Tạm hết hàng](https://pico.vn/map/23/so-2-pho-long-bien-2-ngoc-lam-long-bien-ha-noi) [76 Nguyễn Trãi, quận Thanh Xuân Tạm hết hàng](https://pico.vn/map/1/pico-76-nguyen-trai-thanh-xuan-ha-noi) [173 Xuân Thủy, quận Cầu Giấy Tạm hết hàng](https://pico.vn/map/3/pico-173-xuan-thuy-cau-giay-ha-noi) [324 Tây Sơn, quận Đống Đa Tạm hết hàng](https://pico.vn/map/7/pico-324-tay-son-dong-da-ha-noi) [Số 240 Tôn Đức Thắng, quận Đống Đa Tạm hết hàng](https://pico.vn/map/19/240-ton-duc-thang-dong-da) **Đến xem hàng ở Miền Bắc:** [Số 2175 Đại lộ Hùng Vương, Tp. Việt Trì Tạm hết hàng](https://pico.vn/map/31/pico-viet-tri-02) [Số 04 Nguyễn Văn Cừ, P. Ninh Xá, TP Bắc Ninh Tạm hết hàng](https://pico.vn/map/35/pico-bac-ninh-02) [Số 4 Bạch Đằng, Hạ Lý, Hồng Bàng Tạm hết hàng](https://pico.vn/map/28/pico-hai-phong-2) [Số 240 Lê Hoàn, Ba Đình, TP. Thanh Hóa Tạm hết hàng](https://pico.vn/map/29/pico-thanh-hoa) [Part Tower đối diện ga Phủ Lý, Lê Hoàn, Phủ Lý Tạm hết hàng](https://pico.vn/map/30/pico-ha-nam) [Số 90 Lê Hồng Phong, Vân Giang, Tp. Ninh Bình Tạm hết hàng](https://pico.vn/map/25/90-le-hong-phong-van-giang-tp-ninh-binh) [Tòa nhà Hapro, Quảng trường 3/2, Tp. Bắc Giang Tạm hết hàng](https://pico.vn/map/26/pico-hoang-van-thu-bac-giang) [Số 87 Quang Trung, P. Quang Trung, Tp. Nam Định Tạm hết hàng](https://pico.vn/map/27/pico-nam-dinh) [578 Trần Phú, Từ Sơn, Tp. Bắc Ninh Tạm hết hàng](https://pico.vn/map/22/578-tran-phu-bac-ninh) [Số 275 Lạch Tray, Tp. Hải Phòng Tạm hết hàng](https://pico.vn/map/21/275-lach-tray--tp-hai-phong) [Số 1 Hai Bà Trưng, tx. Phúc Yên, Vĩnh Phúc Tạm hết hàng](https://pico.vn/map/18/pico-1-hai-ba-trung-phuc-yen-vinh-phuc) [Số 1454 Hùng Vương, Việt Trì, Phú Thọ Tạm hết hàng](https://pico.vn/map/15/pico-1454-hung-vuong-viet-tri-phu-tho)
|
|![]()
|
|![]()
|
|![]()
|
|![]()
|
|![]()
|
|![]()
|
|![]()
|
|![]()
|
|![]()
|
|![]()
|
|
|
|
![ Tivi LED SkyWorth 40E310 40 inch](https://cdn.pico.vn/Product/33966/40E310-mo-ta-chuc-nang.jpg)


text:
Bên Nhau Trọn Đời - [Vietsub + Kara] Hà Dĩ Ái Tình - Chung Hán Lương Bên Nhau Trọn Đời - Nhạc Phim
-
Thể loại:
Phim,
Phim Hoa Ngữ,
Tâm Lý - Lãng Mạn,
Phim Thần Tượng,
Phim Ngôn Tình,
Phim Gia Đình,
Live Action - Chuyển Thể
-
Tag:
Bên Nhau Trọn Đời,
Chung Hán Lương,
Đường Yên
lượt xemBáo lỗi
Nhấn Shift + Enter để xuống dòng. Bình luận phải dài hơn 50 ký tự. Bình luận 0 ký tự

markdown:
#
**Bên Nhau Trọn Đời - [Vietsub + Kara] Hà Dĩ Ái Tình - Chung Hán Lương Bên Nhau Trọn Đời - Nhạc Phim**
-
**Thể loại:**
### ,
[Phim](/the-loai/Phim/IWZ9Z0DW.html)
### ,
[Phim Hoa Ngữ](/the-loai/Phim-Hoa-Ngu/IWZ9ZI0A.html)
### ,
[Tâm Lý - Lãng Mạn](/the-loai/Tam-Ly-Lang-Man/IWZ9ZI0I.html)
### ,
[Phim Thần Tượng](/the-loai/Phim-Than-Tuong/IWZ9ZIUD.html)
### ,
[Phim Ngôn Tình](/the-loai/Phim-Ngon-Tinh/IWZ9ZI7O.html)
### ,
[Phim Gia Đình](/the-loai/Phim-Gia-Dinh/IWZ9ZIWD.html) [Live Action - Chuyển Thể](/the-loai/Live-Action-Chuyen-The/IWZ9ZI7Z.html)
-
**Tag:**
### Bên Nhau Trọn Đời,
### Chung Hán Lương,
### Đường Yên
** lượt xem** [Báo lỗi](#)
Nhấn Shift + Enter để xuống dòng. Bình luận phải dài hơn 50 ký tự. Bình luận 0 ký tự

X-Server: TV-main