===============================================================================
Metrowerks CodeWarrior(TM) Development Studio for NINTENDO DS(TM) v1.2
Service Pack 3
===============================================================================

2005年11月9日

===============================================================================
       重要な情報が記載されていますので、ツールの使用前にお読みください
===============================================================================

このリリースノートには、ドキュメントに反映されていない直前の変更点や特に注意す
るべき項目などの重要な情報を記載しています。マニュアルやその他のドキュメントの
内容を置き換える情報もありますので、記載されている情報を注意してお読みください。

*** ライセンス期限は2006年3月31日までとなります ***

================================================================================
Service Pack 3 のインストールについて
================================================================================

本サービスパックは IS-NITRO-DEBUGGER のバージョン 1.61以降に対応しています。
バージョン 1.61以降との組み合わせでご使用下さい。

このインストーラは CodeWarrior for NINTENDO DS Version 1.2 またはその
サービスパック 1 および 2 を Version 1.2 Service Pack 3 にアップデートします。
コンパイラパッチ、コンパイラ・リンカパッチを適用済みの環境に対してもインストー
ルできます。以下の手順でアップデートを行ってください。

１）実行中の CodeWarrior アプリケーションをすべて終了します
２）CW_NINTENDO_DS_R1.2_Service_Pack_3.exe を実行します

=========================================
前回のリリースからの変更点
=========================================

このリリースで追加された主な機能、変更には次のものがあります。

1.2 Service Pack 3での主な変更
=====================================

* コンパイラ、リンカの修正
--------------------
コンパイラとリンカについて、いくつかの報告された問題を修正しました。本文書末
にある修正リストをご参照下さい。
コンパイラが変更されたことに伴い、ライブラリが再ビルドされています。


* デバッガの修正
----------------
いくつかの報告された問題の修正のため、デバッガプラグインとIDEを更新しました。



NITRO-SDK 3.0 対応のステーショナリ
-------------------------------------------------------------------
本リリースには NITRO-SDK 3.0 に対応したステーショナリが含まれています。
NITRO-SDK 3.0 は年内に任天堂株式会社様よりリリースされる予定です。
※ NITRO-SDK 2.2 をご使用の場合は、ステーショナリは SDK2.1用のものをご
   使用ください。

SDK3.0用のステーショナリでは、
・nitro.h をプリコンパイル済みヘッダで使用しています。
・Nitro TS Debug ターゲットでの Optimize For の指定（Global Optimizations
  パネル）で "Smaller Code Size" が選択されています。

プリコンパイル済みヘッダを使用しないように変更する方法につきましては、この
ステーショナリを使ってプロジェクトを生成した際に自動的にプロジェクトに登録
される ReadMe.txt をご参照ください。

Optimize For "Smaller Code Size"は、NITRO-SDKで NITRO_DEBUG=trueを指定した
場合と同等な指定です。



バックアップデバイスウィンドウでの新機能
-------------------------------------------
バックアップデバイス ウィンドウ（Nitroメニュー --> "Backup Memory..."）に
次の機能が追加されました。
・デバイスへの特定の値の書き込み、デバイス内容の一部の書き換え機能(MWGD71)
・DSサブカード "4M FLASH"、"256K FRAM"への対応(MWGD142)
これらの機能を使用するには、IS-NITRO-DEBUGGER の Version 1.61 以降をインス
トールしてください。



プリコンパイル済みヘッダ内で競合するdefine値があった場合のエラー表示
-------------------------------------------------------------------
コンパイラは、先行して定義されているマクロの値がプリコンパイル済みヘッダ内で
の定義と異なる場合にエラーを表示して停止するようになりました。(MWGD60)

     --- my.pch++ --
     #pragma precompile_target "my.mch++"

     #define NG_VALUE 123
     #define OK_VALUE 456
     ---------------

     --- test.cpp ---
     #define NG_VALUE 1234
     #define OK_VALUE 456

     #include "my.mch++"            // NG_VALUEが再定義される為、エラーが
                                    // 発生しコンパイルは中断。
                                    // OK_VALUEはエラー無し。

     ----------------
 
         =>
 
     Error : macro 'NG_VALUE' redefined test.cpp line 4   #include "my.mch++"



Thumbモードで大きなswitch文があった場合の動作(MWGD68)の変更
(#pragma big_switchの新設)
-----------------------------------------------------------------------------
switchステートメントのトータルサイズが32Kバイトを超える場合に次のエラーを
発生させるようになりました。
    "Thumb mode switch range is 32K bytes, use '#pragma big_switch on' 
    option for large switches in Thumb mode"

Thumbモードの場合、デフォルトではメモリを節約するために16ビットのスイッ
チテーブルが使用されます。Thumbで32Kバイトを超えるスイッチステートメント
が必要な場合は、必要なswitchステートメントに対して次のpragmaを使用して下
さい。このpragmaはbuild80コンパイラで新しく設けられたものです。

    '#pragma big_switch on|off|reset'

これにより、32ビットのスイッチテーブルが使用されるため、コードサイズは大き
くなります。
#pragma big_switch は ARMモードでは効果がありません。

#pragma big_switch on 
    switch (value)
    {
    ... very large switch cases ...
    }
#pragma big_switch reset



複数オーバーレイモジュールへ対応の改善
---------------------------------------------------
常駐領域及び複数のオーバーレイグループのモジュールから同一の関数が使われ
る状況において、複数のオーバーレイグループが存在していて、常駐領域にある
関数の実体がインライン化によって無くなった場合に、各オーバーレイモジュー
ルそれぞれに実体を持つ事を許可しました。
常駐領域にある関数の実体がインライン化されずに残る場合は、各オーバーレイモ
ジュールからは関数の実体は取り除かれ、各オーバーレイモジュール内からは常駐
領域に存在している関数の実体を呼び出します。
(MTWX19574)



Thumb関数の4バイト境界配置
---------------------------------------------------
Thumbモードの場合、コンスタントプールへの正しいアクセスを確実にするため、関数
が4バイト境界に配置されるようになっています。以前は2バイト境界で配置されてい
ました。
後続の関数を4バイト境界に配置させるために、Thumb関数の後部にパディングワードが１つ置かれる場合があります。



ドキュメント、ヘルプシステムの更新
---------------------------------------------------
・IDE 5.7 Automation Guide を日本語化しました。
・ヘルプの検索タブで、検索結果の絞り込み方法を指定できるようになりました。
・NITRO-SDK関数リファッレンスマニュアルを NITRO-SDK 2.2 対応のものに更新し
  ました。



================================================================================
修正された問題
================================================================================

1.2 Service Pack 3 で修正された問題（パッチで修正済みのものを含んでいます）
===================================

  Number     Problem Addressed
  =========  =================
- MTWX18157 ウォッチポイントにアクセスしない行でデバッガが実行停止する
- MTWX18240 クラスプロトタイプを使用した場合に、デバッガがクラスのメンバを表示
            出来ない場合があった。DWARF2のプレースホルダクラスタイプ欄と実際の
            クラスタイプ欄を区別できるようにリンカを更新した。
- MTWX18496 デバッガが ADDLS命令のステップ実行操作で実行中状態になってしまう
- MTWX19431 Boost C++ Libraries Version 1.33.0 を使用したプリコンパイル済み
            ヘッダを作成しようとするとコンパイラがクラッシュする
- MTWX19434 LCFファイル中に同じ名前のセクションがあった場合、エラーを発生さ
            せるようにした
- MTWX19445 初期値ありの変数に対してLCFでアドレスを変更された場合に、警告を
            表示するようにした
- MTWX19484 CW for DS 1.2において、#pragma gcc_extensions on を使用しても gcc
            形式の構造体メンバの初期化構文をglobal変数に対して使用した場合に
            コンパイルエラーが発生する
- MTWX19490 Thumbでのswitch case文で不正なジャンプ先アドレスが生成される場合
            がある
- MTWX19492 switch case文のdefaultに対して正しくない命令が生成される場合がある
- MTWX19507 組込み関数 __memcpy() のプロトタイプを標準関数の memcpy()と同じ
            にした
- MTWX19508 コマンドラインコンパイラが -help で表示する説明に、-opt のデフ
            ォルト値（speed/space）の記述が無かった
- MTWX19545 Thumbで最適化レベルが1以上の時に、"#pragma big_switch on" を指定
            した場合に、switch case文で正しくない分岐先アドレスが生成される
            場合があった
- MTWX19572 最適化レベル１以上の場合にコンパイラ内部エラーが発生する場合がある
- MTWX19573 MTWX19572と同根のコンパイラ内部エラー
- MTWX19574 リンカでのMULTIDEFバインディングのシンボルの扱いを変更した。
            これにより、メイン部分に同名シンボルがすでに存在する場合を除き、
            MULTIDEFバインディングの同名シンボルは、異なるオーバーレイのそれ
            ぞれの中に存在可能になった。
- MTWX19666 コマンドラインコンパイラで、-readonlystringsオプションについての
            ヘルプ表示が壊れていた
- MTWX19671 "Make string constants read-only" オプションが働かなかった
- MTWX19672 関数からのリターンとして生成するアセンブラ命令を、v5tの場合、
            bxを使用しない効率的な命令に改善した。
- MWGD48    Thumbの場合に、定数のアドレスが正しくロードされない
- MWGD60    (再修正) 次の問題への対応で、エラーでは無く警告を発生させていたの
            を修正した：
                MWGD60 コマンドラインとプリコンパイル済みヘッダでdefineの
                二重定義がされた場合に、コンパイラがエラーを表示しない
- MWGD60    コマンドラインとプリコンパイル済みヘッダでdefineの二重定義が
            された場合に、コンパイラがエラーを表示しない
- MWGD67    インラインアセンブラが、最適化レベルが２以上の場合に、０番地
            への分岐を生成する
- MWGD68    (再実装) Thumbモードで、巨大な switch-case文に対して、コン
            パイラが間違ったコードを生成する
- N/A       デッドストリップされたDWARF2 typedefエントリから参照される 
            DWARF2基本型のバグを修正
- MWGD71    「バックアップデバイス全体に特定の値を書き込みます」と「バック
            アップデバイス内容の一部書き換えます」の機能を"Backup Memory..."
            コマンドでサポートした。
- MWGD72    IDEのTCLコマンドウィンドウを使用しているとき、makeコマンドで発生
            したエラーの表示が得られない
- MWGD92    Thumbでビルドした場合、デバッガ起動直後にARM7が意図しない停止
            をする
- MWGD102   ウォッチポイントで監視対象としているメモリ領域を変更しない行で、
            デバッガが停止する
- MWGD114   1.2 Service Pack 2 デバッガのクラッシュ
- MWGD115   評価式ウィンドウや変数ウィンドウで構造体が展開表示されている場合、
            ステップオーバー操作でデバッガがクラッシュする
- MWGD116   評価式ウィンドウで構造体が展開表示されている場合、ステップ
            オーバー操作でデバッガがクラッシュする
- MWGD121   NITRO-SDK 3.0 形式のスレッドをデバッガでサポートした
- MWGD122   NITRO-SDK 3.0 形式のスレッドと同時にNITRO-SDK 2.x 形式のスレッドも、
            デバッガでサポートした
- MWGD142   "Backup Memory..." コマンドで、"DSサブカード 4M FLASH"と
            "DSサブカード 256K FRAM"をサポートした
- MWGD151   インストーラがRemote Debuggingパネルを変更してしまう

